Flutter 中的 JSON 解析,独家发布

本文详细介绍了在Flutter中处理JSON解析的过程,包括对象嵌套、复杂对象数组嵌套和单纯的数组。通过示例代码,展示了如何处理Map到对象的转换,特别是如何正确地将List<Map<String, dynamic>>转换为List<自定义对象>,以避免类型不匹配的错误。" 127807318,1125708,MySQL 5.5+:Block Nested-Loop(BNL) 算法解析,"['数据库', '数据库优化', 'SQL', '算法']
摘要由CSDN通过智能技术生成

错误日志说 List<dynamic> 不是 List<String> 的子类型,也就是我们在country的实体类中直接给 cities 属性赋值为 cities: json['cities'],我们先来看看 json['cities'] 是什么类型:

factory Country.fromJson(Map<String, dynamic> json) {
print(‘json[“cities”] type is ${json[‘cities’].runtimeType}’);
return Country(name: json[‘name’], cities: json[‘cities’]);
}

输出如下:

flutter: json[“cities”] type is List

这个时候我们需要将 Country.fromJson(...) 方法作如下更改:

factory Country.fromJson(Map<String, dynamic> json) {
print(‘json[“cities”] type is ${json[‘cities’].runtimeType}’);
var originList = json[‘cities’];
List cityList = new List.from(originList);
return Country(name: json[‘name’], cities: cityList);
}

上述代码中,我们创建了一个 List<String> 类型的数组,然后将 List<dynamic> 数组中的元素都添加到了 List<String> 中。输出如下:

flutter: json[“cities”] type is List
flutter: country name is China

对象嵌套

定义一个 shape.json ,格式如下:

{
“name”: “rectangle”,
“property”: {
“width”: 5.0,
“height”: 10.0
}
}

实体如下:

class Shape {
String name;
Property property;

Shape({this.name, this.property});

factory Shape.fromJson(Ma

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值