【问题标题】:Flutter - Json.decode return incorrect jsonFlutter - Json.decode 返回不正确的 json
【发布时间】:2019-04-30 06:06:27
【问题描述】:

最近我更改了我的应用程序的所有 JSON 以显示服务的错误、消息和正文。在正文中,我有一组数据。在我更改 JSON 之前,所有人都在做这样的事情:

final responseJson = json.decode(response.body);

返回:

[{"id":1,"descripcion":"Tereno Rio"},{"id":2,"descripcion":"Tereno 阿西尔"}]

现在我尝试做这样的事情:

final responseJson = json.decode(response.body);
print(json.encode(responseJson));

返回:

[{"code":0,"message":"","body":[{"id":1,"descripcion":"Terreno Rio"},{"id":2,"descripcion":"Terreno Asier"}]}]

有人知道提取 JSON 的某些元素并解码的正确方法吗?

【问题讨论】:

  • 这看起来像 List.toString() 产生的。这不是 JSON,这只是用于调试目的的 Dart 数据结构的字符串表示。您确定这是来自 print(json.encode(responseJson)); 而不是来自 print(responseJson) 的输出吗?
  • 我错了,你说得对。无论如何,我不知道如何提取这个 json 的 body 元素。我更新问题。
  • 你读过JSON and serialization吗?
  • "提取 json 的某些元素并解码的正确方法" 不确定这意味着什么。通常你解码并获取一个 List 或 Map,然后访问该 List 或 Map 中的元素。
  • 想象一下你有 [{"code":0,"message":"","body":[{"id":1,"descripcion":"Terreno Rio"},{" id":2,"descripcion":"Tereno Asier"}]}] 我只想要 body 'tag' 之后的元素。

标签: json dart flutter


【解决方案1】:

我确定您得到的 JSON 响应是这样的:

{"code":0,"message":"","body":[{"id":1,"descripcion":"Terreno Rio"},{"id":2,"descripcion":"Terreno Asier"}]}

因此,为了解析该 JSON,您可以直接访问正文:

List list = responseJson['body'];

现在你可以遍历数组的元素了:

for (Map<String, dynamic> element in list) {
    print(element);
}

【讨论】:

    【解决方案2】:

    您会得到 List 或 Maps。先用[0]访问List的第一个元素(只有1个),然后用['body']访问返回的Map的body元素:

    var body = responseJson[0]['body'];
    print(body);
    

    【讨论】:

    • 如果我尝试你的代码返回 '[{id: 1, descripcion: Terreno Rio}, {id: 2, descripcion: Terreno Asier}]' 没有“”所以颤振无法识别名称元素和数据。
    • “所以颤振无法识别元素和数据的名称”。我不明白你是怎么得出这个结论的。如果您想要包含该数据的类实例,那么您需要阅读上面发布的链接 pskink。没有将 JSON 映射到类的唯一方法,您需要使用代码明确指定该映射。
    猜你喜欢
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 2021-07-28
    • 2023-04-10
    • 2019-08-05
    • 2016-10-13
    • 1970-01-01
    相关资源
    最近更新 更多