如何使用Dart Serialization获取JSON序列化字符串

Tus*_*shu 10 serialization json dart

对于以下代码

var address = new Address();
address.street = 'N 34th';
address.city = 'Seattle';
var serialization = new Serialization()
 ..addRuleFor(address);
String output = serialization.write(address);
Run Code Online (Sandbox Code Playgroud)

我如何获得这样的json输出:

address: {'street':'N 34th', 'city':'Seattle'}
Run Code Online (Sandbox Code Playgroud)

上述代码生成的输出如下:

{"roots":[{"__Ref":true,"rule":3,"object":0}],"data":[[],[],[],[["Seattle","N 34th"]]],"rules":"{\"roots\":[{\"__Ref\":true,\"rule\":1,\"object\":0}],\"data\":[[],[[{\"__Ref\":true,\"rule\":4,\"object\":0},{\"__Ref\":true,\"rule\":3,\"object\":0},{\"__Ref\":true,\"rule\":5,\"object\":0},{\"__Ref\":true,\"rule\":6,\"object\":0}]],[[],[],[\"city\",\"street\"]],[[]],[[]],[[]],[[{\"__Ref\":true,\"rule\":2,\"object\":0},{\"__Ref\":true,\"rule\":2,\"object\":1},\"\",{\"__Ref\":true,\"rule\":2,\"object\":2},{\"__Ref\":true,\"rule\":7,\"object\":0}]],[\"Address\"]],\"rules\":null}"}
Run Code Online (Sandbox Code Playgroud)

Set*_*add 12

事实证明,dart:json图书馆使这很容易.您需要toJson在班级中实施才能使其正常运行.

例如:

class Address {
  String street;
  String city;

  Map toJson() {
    return {"street": street, "city": city};
  }
}

main() {
  var addr = new Address();
  addr.street = 'N 34th';
  addr.city = 'Seattle';
  print(JSON.stringify(addr));
}
Run Code Online (Sandbox Code Playgroud)

哪个会打印出来:

{"street":"N 34th","city":"Seattle"}
Run Code Online (Sandbox Code Playgroud)


Edu*_*pat 1

您可以使用JsonObject for Dart,将其添加到您的pubspec.yaml文件中,然后运行pub install(工具 -> Pub Install)

dependencies:
  json_object: 
    git: git://github.com/chrisbu/dartwatch-JsonObject.git
Run Code Online (Sandbox Code Playgroud)

然后更改您的代码以调用objectToJson

dependencies:
  json_object: 
    git: git://github.com/chrisbu/dartwatch-JsonObject.git
Run Code Online (Sandbox Code Playgroud)

请注意,objectToJson需要镜像支持(反射功能),目前仅适用于 Dart VM。截至 2012 年 12 月 20 日,它在 dart2js 中不起作用。