Flutter中如何访问并打印解析后JSON模型内的Lc.percent字段值
解决方法
第一步:修正现有数据类的类型错误
你当前定义的Lc类中percent字段被声明为int类型,但你提供的JSON数据中percent的值为100.4,属于浮点类型,直接解析会触发类型匹配异常,需要先调整字段类型:
class Lc { // 把int改为double late double percent; late String color; late int weight; late double totalWeight; late double totalRubForPerson; // 其余构造、解析代码保持不变 }
第二步:解析JSON并取值
需要先将JSON字符串转为Map结构,再通过你已经写好的fromJson方法转为实体对象,之后用点语法直接访问对应属性即可,示例代码如下:
import 'dart:convert'; void getLcPercent() { // 你的JSON源数据 String rawJson = ''' { "lc": { "percent": 100.4, "color": "yellow", "weight": 30, "total_weight": 32.51, "total_rub_for_person": 7.5 } } '''; // 1. JSON字符串转Map Map<String, dynamic> jsonMap = jsonDecode(rawJson); // 2. 反序列化为PersonKpi实体 PersonKpi kpiData = PersonKpi.fromJson(jsonMap); // 3. 打印percent值 print(kpiData.lc.percent); }
Widget中使用示例
如果需要在界面组件中展示该值,直接调用对应属性即可:
@override Widget build(BuildContext context) { // 假设你已经拿到解析好的kpiData对象 return Text(kpiData.lc.percent.toString()); }
注意事项
- 你当前写的
PersonKpi.fromJson方法中对所有字段都用了!非空断言,如果实际返回的JSON数据缺失fc、revenue等你声明的非lc字段,会直接抛出空异常。建议你将这些字段声明为可空类型,或者解析时添加默认值,避免运行时崩溃。 - 后续复杂数据类的序列化逻辑推荐用官方的
json_serializable工具自动生成,避免手写代码出现类型匹配、字段名写错等问题。
内容的提问来源于stack exchange,提问作者Alexander Schurf
相关产品推荐
相关产品推荐

