7

如何从 dart 中的集合中创建 JSON 字符串,就像我可以使用 Maps 一样。文档说我可以将地图或数组传递给JSON.stringify()方法。但是 Dart 中没有 Array 数据类型,传递一个集合给了我一个例外。

我有一个天真的解决方法,但我想知道是否会有更好的方法来做到这一点:

    String s = '[';
    bool first=true;

    _set.forEach(function(item){
      if (first) {
        first = false;
      } else {
        s+=',';
      }
      s += JSON.stringify(item);
    });
    s +=']';
    print(s);
    return s;
4

2 回答 2

8

在 Dart 中,您可以使用'方法从一个 JSONString中获取。这是一个例子:ObjectJsonEncoderconvert

import 'dart:convert';

void main() {
  final jsonEncoder = JsonEncoder();

  final collection1 = List.from([1, 2, 3]);
  print(jsonEncoder.convert(collection1)); // prints [1,2,3]

  final collection2 = List.from(['foo', 'bar', 'dart']);
  print(jsonEncoder.convert(collection2)); // prints ["foo","bar","dart"]

  final object = {'a': 1, 'b': 2};
  print(jsonEncoder.convert(object)); // prints {"a":1,"b":2}
}
于 2018-12-28T16:25:52.303 回答
5

传递列表对我有用:

  • 在 Dart VM 中导入dart-sdk/lib/frog/server/dart_json.dart
  • 在 Dartium 导入json:dart

使用此代码:

void main() {
  var list = new List.from(["a","b","c"]);
  print(JSON.stringify(list));
}

打印这个 JSON 片段:

["a","b","c"]

Set.from(...)鉴于 JSON 仅处理地图和列表,因此不适用于预期的 new 。

于 2012-02-08T14:01:04.560 回答