如何在Dart中以JSON.stringify集合

And*_*rle 3 json dart

如何使用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;
Run Code Online (Sandbox Code Playgroud)

Phi*_*art 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));
}
Run Code Online (Sandbox Code Playgroud)

打印此JSON代码段:

["a","b","c"]
Run Code Online (Sandbox Code Playgroud)

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


Sal*_*ore 5

在 Dart 中,您可以使用's方法String从 an 中获取 JSON 。下面是一个例子: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}
}
Run Code Online (Sandbox Code Playgroud)