使用Dart解析JSON字符串时如何转换数据

10

我正在使用dart:json中提供的parse()函数。是否有一种方法可以使用parse()转换解析后的数据?我考虑到了JavaScript中使用reviver参数解析JSON类似的功能:

JSON.parse(text[, reviver])
1个回答

14

dart:json 中的 parse() 函数接受一个回调作为参数,您可以使用它来转换解析后的数据。例如,您可能更喜欢将日期字段表示为 DateTime 对象,而不是由表示年、月和日的数字列表组成。在解析时将回调函数作为第二个参数传递给“reviver”函数。

此函数对于解析的每个对象或列表属性都会调用一次,回调函数的返回值将代替已解析的值:

import 'dart:json' as json;

void main() {
  var jsonPerson = '{"name" : "joe", "date" : [2013, 10, 3]}';

  var person = json.parse(jsonPerson, (key, value) {
    if (key == "date") {
      return new DateTime(value[0], value[1], value[2]);
    }
    return value;
  });

  person['name'];             // 'joe'
  person['date'] is DateTime; // true
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接