如何在Flutter中字符串化JSON

cbjzeqam  于 2023-03-24  发布在  Flutter
关注(0)|答案(2)|浏览(399)

在flutter(dart)中,很容易将Json反序列化并从中获取令牌,但当我再次尝试序列化它时,键和值周围的引号消失了。

String myJSON = '{"name":{"first":"foo","last":"bar"}, "age":31, "city":"New York"}';
var json = JSON.jsonDecode(myJSON); //_InternalLinkedHashMap
var nameJson = json['name']; //_InternalLinkedHashMap
String nameString = nameJson.toString();

虽然nameJson有所有的双引号,但nameString
{first: foo, last: bar}

  • (正确答案是{"first": "foo", "last": "bar"})*

如何保存Dart删除" s?

cedebl8k

cedebl8k1#

当将对象编码回JSON时,您使用的是.toString(),它不会将对象转换为有效的JSON。使用jsonEncode可以解决这个问题。

import 'dart:convert';

void main() {
  String myJSON = '{"name":{"first":"foo","last":"bar"}, "age":31, "city":"New York"}';
  var json = jsonDecode(myJSON);
  var nameJson = json['name'];
  String nameString = jsonEncode(nameJson); // jsonEncode != .toString()
  print(nameString); // outputs {"first":"foo","last":"bar"}
}
zy1mlcev

zy1mlcev2#

假设你有一个map,你想把它字符串化成一个字符串变量,那么你需要做的就是:

Map<String, dynamic> map = {...};
String stringifiedString = jsonEncode(map);

输出将为:

"{\"name\":{\"first\":\"foo\",\"last\":\"bar\"}, \"age\":31, \"city\":\"New York\"}"

您可以在文档页面上阅读有关此的更多信息。

相关问题