gpt4 book ai didi

dart - Dart 2和解析json

转载 作者:行者123 更新时间:2023-12-03 04:29:57 30 4
gpt4 key购买 nike

我正在尝试使用Dart 2 for Web将json解析为产品列表。

我有以下类(class):

class Product {

final String Problem;

final String Owner;

final String Description;

const Product({
this.Problem,
this.Owner,
this.Description,
});


factory Product.parse(Map<String, dynamic> json) {
print(json);
return new Product(
Problem: json["Problem"],
Owner: json["Owner"],
Description: json["Description"]
);
}
}

我正在尝试使用以下方法解析此内容:
Stream<Product> getProducts() async* {
final payload = await HttpRequest.getString("products.json");
print(payload);
//var _json = (json.decode(payload));
print("break");
var list = json.decode(payload);
print(list);
//print(list);
final productList = (json.decode(payload) as List).cast<Map<String, dynamic>>();

}

但是,此失败并显示以下错误:

EXCEPTION: Type '_JsonMap' is not a subtype of expected type 'List'.



我可以看到调试时有一个 list[Symbol(_original)],但是当我尝试对此求值时,我返回的是未定义的。

我也试过
  • List list = json.decode(payload) as List;
  • List<dynamic> list = json.decode(payload);
  • List<dynamic> list = json.decode(payload) as List<dynamic>;
  • var list = (json.decode(payload)).cast<Map<String, dynamic>>();
  • var list = (json.decode(payload)).cast<Map<dynamic, dynamic>>();

  • 但得到同样的错误。

    杰森
    {
    "Product_One": {
    "Owner": "test",
    "Description": "test description",
    "Theme_Objective": "test objective",
    "Technical_details": "test technical details",
    "Problem": "test",
    "Solution": "test"
    }
    }

    最佳答案

    您的JSON不包含任何列表,而是所有 map 。
    当您尝试将Map转换为List时,由于 map 未列出,因此它必须失败。

    也许你想做:

    final productList = (jsonDecode(payload) as Map).values.toList();

    这为您提供了产品 map 的列表,但没有您似乎并没有使用的名称。

    关于dart - Dart 2和解析json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50431119/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com