Flutter/Dart解析时间序列JSON时Null转String类型错误怎么解决
问题分析与修复方案
错误诱因
报错是因为PriceData.fromJson方法中使用的JSON键名和实际JSON文件中的键名不匹配,导致读取对应字段时返回Null,而你定义的所有PriceData属性都是非空String类型,无法接收Null值,因此抛出type 'Null' is not a subtype of type 'String'异常。
不匹配的三个字段如下:
- 实际JSON键名为
5. adjusted close,代码中错误写为5. adjustedClose - 实际JSON键名为
7. dividend amount,代码中错误写为7. dividendAmount - 实际JSON键名为
8. split coefficient,代码中错误写为8. splitCoefficient
修复方法
将PriceData类的工厂构造方法中的对应键名替换为和JSON一致的名称即可,修改后的PriceData.fromJson代码如下:
factory PriceData.fromJson(dynamic json) { return PriceData( open: json["1. open"], high: json["2. high"], low: json["3. low"], close: json["4. close"], adjustedClose: json["5. adjusted close"], // 替换为和JSON一致的键名 volume: json["6. volume"], dividendAmount: json["7. dividend amount"], // 替换为和JSON一致的键名 splitCoefficient: json["8. split coefficient"]); // 替换为和JSON一致的键名 }
可选优化:如果不确定字段是否一定存在,可将字段定义为可空类型(如
String? adjustedClose),或者读取时添加默认值兜底,避免偶发的空值异常。
内容的提问来源于stack exchange,提问作者Yi Wen Edwin Ang
相关产品推荐
相关产品推荐

