如何解决从Flutter检索到的JSON获取值时出错
在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。