You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发报错:String无法转为index所需int类型求解决

解决Flutter中TypeError: String不是int类型的索引问题

咱们先把问题根源揪出来:你看你提供的JSON里,body字段是空数组[],但你的代码里却直接写了jsonData['body']['und']——数组只能用数字索引(比如[0]),你用字符串'und'当索引,这肯定会触发那个类型错误啊!而且你的判断条件jsonData['body']['und'][0]['value'] == 0也完全走不通,因为body是空数组,根本没有und这个属性,更别说后面的value了。

正确的逻辑应该是这样的:

  • 先判断body是否为空数组,或者是否没有有效内容
  • 如果body为空/无效,就加载field_body的数据;否则用body的数据

修正后的代码:

var data = await http.get(url); 
var jsonData = json.decode(utf8.decode(data.bodyBytes)); 

// 先处理内容的有效性判断
String content;
var body = jsonData['body'];
// 检查body是不是非空数组,且包含有效und元素
if (body is List && body.isNotEmpty && body[0] != null && body[0]['und'] != null && body[0]['und'].isNotEmpty) {
  var bodyValue = body[0]['und'][0]['value'];
  // 可以额外判断内容是否为空字符串,按需调整
  content = bodyValue.isNotEmpty ? bodyValue : jsonData['field_body']['und'][0]['value'];
} else {
  // body为空或无效,直接取field_body的数据
  content = jsonData['field_body']['und'][0]['value'];
}

return DetailData(
  jsonData['title'], 
  content,
  jsonData['field_image_wp']['und'][0]['filename'], 
  jsonData['name']
);

额外小提醒:

  • 最好给每个字段的访问加上空安全判断,比如jsonData['field_body']?['und']?[0]?['value'] ?? '',避免因为某个字段缺失导致崩溃
  • 你的原始JSON里field_body.und[0].value的HTML标签<p>没闭合,如果是实际数据的问题,记得处理一下,避免显示异常

内容的提问来源于stack exchange,提问作者Mahant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:11:22