问题描述
在flutter应用程序中将数据提取到字段中时,出现错误。 JSON数据已被获取。在执行以下代码时出现错误。我应该如何解决?
错误:
VERBOSE-2:ui_dart_state.cc(166)]未处理的异常:类型'(dynamic)=> Null'不是类型'(String,dynamic)=> void'的'f'
呼叫
orderdetail = OrderModel.fromJson(json.decode(response.body));
完整代码:
OrderModel.fromJson(Map<String,dynamic> json) {
error = json['error'];
if (json['content'] != null) {
content = new List<OrderContent>();
//here the error occurs
json['content'].forEach((v) {
content.add(new OrderContent.fromJson(v));
});
}
}
订购内容分类
class OrderContent {
String code;
String name;
String ordernumber;
var order_header;
OrderContent({this.code,this.name,this.ordernumber,this.order_header});
OrderContent.fromJson(Map<String,dynamic> json) {
code = json['code'];
name = json['name'];
ordernumber = json['order_no'];
order_header = json["order_header"];
}
Map<String,dynamic> toJson() {
final Map<String,dynamic> data = new Map<String,dynamic>();
data['id'] = this.code;
data['name'] = this.name;
data['order_header'] = this.order_header;
data['order_no'] = this.ordernumber;
return data;
}
}
我已经如上所述发布了OrderContent类,以供数据参考
我在下面工作的JSON数据结构
{
"error": "false","content": {
"16": [
[
{
"sod_pk": "31688","soh_fk": "23660","sqd_fk": "33294","order_header": {
"soh_pk": "23660","order_no": "16",}
}
],[
{
"sod_pk": "31689","sqd_fk": "33293",}
}
]
],"18": [
[
{
"sod_pk": "31744","soh_fk": "23702","sqd_fk": "33354","order_header": {
"soh_pk": "23702","order_no": "18",[
{
"sod_pk": "31745","sqd_fk": "33356",]
}
}
上面的JSON数据结构在每个商品详细信息中都没有嵌套的订单,必须在所有订单编号中提取订单,然后在订单的各个数据中进行提取。由此可以清楚地了解导致错误的原因。
解决方法
在下面尝试我的代码:
Map<dynamic,dynamic> response = {
'error': 'false','content': [
{
'code': 'Code1','name': 'Name1','order_no': '25','order_header': 'Head1'
},{
'code': 'Code2','name': 'Name2','order_no': '50','order_header': 'Head2'
}
]
};
List<OrderContent> result = response["content"].map<OrderContent>((item) => OrderContent.fromJson(item)).toList();
print(result[0].code);
print(result[0].name);
print(result[0].ordernumber);
print(result[0].order_header);
//Code1
//Name1
//25
//Head1