在Dart中解析JSON的最佳方法

Fer*_*ndo 16 html5 dart

我正在尝试从URL加载json文件并在Dart中解析它.因此,当我谷歌搜索时,我尝试了一些链接中建议的以下代码:

   HttpRequest.getString("hellknight2.js").then((response)
   {
     var model = new JSON.parse(response);
   });
Run Code Online (Sandbox Code Playgroud)

但是,它似乎不再适用于Dart SDK版本0.4.3.5_r20602.在Dart中将Json文件映射到对象的当前最佳方法是什么?

Ale*_*uin 21

只需使用JSON的的dart:convert.这是一个例子:

import 'dart:convert';

main() {
  final myJsonAsString = '{"a": 1, "b": "c"}';
  final decoded = json.decode(myJsonAsString);
  ....
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅解析JSON.

  • 当然,`JSON.parse` 最初是一个已经被移除的 `JSON` 对象的静态函数。迁移旧代码时,使用大写作为前缀更容易,因为您只需更改 import 语句。 (2认同)

小智 7

这是我的解决方案:) 首先,您需要导入convert包:

import 'dart:convert';

var res = json.decode(response.body);
Run Code Online (Sandbox Code Playgroud)

然后您可以通过键获取值,如下所示:

print(res["message"]);
Run Code Online (Sandbox Code Playgroud)


Jul*_*ien 5

就我而言

JSON.decode

没用。

相反,我不得不使用:

import 'dart:convert' as JSON;

final json=JSON.jsonDecode(myJsonAsString);
Run Code Online (Sandbox Code Playgroud)


小智 4

这取决于很多事情。

你得到的json文本是数组还是映射?

您可以尝试:

Map model = new parse(response);
Run Code Online (Sandbox Code Playgroud)

或者

List model = new parse(response);
Run Code Online (Sandbox Code Playgroud)

但你需要将Chris Buckett 的 JSONObject导入到你的包中

import "package:json_object/json_object.dart";
Run Code Online (Sandbox Code Playgroud)

您可以从 pubspec 添加此依赖项来安装它

json_object
Run Code Online (Sandbox Code Playgroud)