【问题标题】:The best way to parse a JSON in Dart在 Dart 中解析 JSON 的最佳方法
【发布时间】:2013-04-07 18:42:52
【问题描述】:

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

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

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

【问题讨论】:

  • 如果您将导入更改为import 'dart:json' as JSON,那么它应该可以工作。

标签: html dart


【解决方案1】:

只需使用dart:convert package 中的json。这是一个例子:

import 'dart:convert';

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

更多详情请见Parsing JSON

【讨论】:

  • 我喜欢导入小写的json,感觉更符合Dart风格。即导入 'dart:json' 作为 json
  • 当然,JSON.parse 最初是已删除的 JSON 对象的静态函数。迁移旧代码时,使用大写作为前缀更容易,因为您只需更改 import 语句。
  • 截至 2014 年 3 月 - 将 'dart:convert' 导入为 JSON;
  • 如何访问嵌套的 json?比如 { "btcinr": { "last": "2614342.0" } } 我想显示 "last" 的值?
【解决方案2】:

就我而言

JSON.decode

没用。

我不得不使用:

import 'dart:convert' as JSON;

final json=JSON.jsonDecode(myJsonAsString);

【讨论】:

    【解决方案3】:

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

    import 'dart:convert';
    
    var res = json.decode(response.body);
    

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

    print(res["message"]);
    

    【讨论】:

    • 如何访问嵌套的 json?比如 { "btcinr": { "last": "2614342.0" } }
    【解决方案4】:

    这取决于很多事情。

    你得到的json文本是数组还是地图?

    你可以试试:

    Map model = new parse(response);
    

    或者

    List model = new parse(response);
    

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

    import "package:json_object/json_object.dart";
    

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

    json_object
    

    【讨论】:

      【解决方案5】:

      为此有一个新的 pub 包:

      Victor Savkin - Serializers

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

      【讨论】:

      • 以上 Google+ 链接已失效。
      【解决方案6】:

      你可以试试这个包。 pub: g_json

      dynamic model = JSON.parse(JsonStringFromAnywhere);
      
      final name = model['name'].stringValue;
      // OR
      final name = model.name;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        • 2021-04-07
        • 2019-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-31
        相关资源
        最近更新 更多