30

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

   HttpRequest.getString("hellknight2.js").then((response)
   {
     var model = new JSON.parse(response);
   });

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

4

6 回答 6

38

只需使用packagejson。这是一个例子:dart:convert

import 'dart:convert';

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

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

于 2013-04-07T20:22:07.487 回答
9

就我而言

JSON.decode

没用。

相反,我不得不使用:

import 'dart:convert' as JSON;

final json=JSON.jsonDecode(myJsonAsString);
于 2019-02-11T16:04:56.217 回答
8

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

import 'dart:convert';

var res = json.decode(response.body);

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

print(res["message"]);
于 2019-07-31T07:51:56.020 回答
4

It depends on a lot of things.

Is the json text you get is an array or a map?

You can try with:

Map model = new parse(response);

Or

List model = new parse(response);

but you need to import JSONObject by Chris Buckett into your package

import "package:json_object/json_object.dart";

You can install it from pubspec adding this dependency

json_object
于 2013-04-07T18:51:27.360 回答
3

为此有一个新的 pub 包:

Victor Savkin - 序列化器

我没有使用它,但在我看来它会适合你。试试看

于 2013-04-07T19:55:17.903 回答
0

你可以试试这个包。发布:g_json

dynamic model = JSON.parse(JsonStringFromAnywhere);

final name = model['name'].stringValue;
// OR
final name = model.name;
于 2020-08-27T03:15:04.360 回答