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

如何判断经json.decode解析后的JSON对象中city键是否存在?

判断Dart解析后的JSON对象中是否存在指定键

我来帮你搞定这个问题~当你用json.decode()把JSON字符串解析成Dart的Map<String, dynamic>对象后,判断是否存在city这个可选键有几种实用的方法:

  • 方法一:使用containsKey()(推荐)
    这是最直接且准确的方式,它会明确检查Map中是否包含指定的键,能清晰区分“键不存在”和“键存在但值为null”的场景:
var jsonResponse = json.decode(str);
if (jsonResponse.containsKey('city')) {
  // city键存在,可安全取值处理
  String cityName = jsonResponse['city'];
  print('City: $cityName');
} else {
  // city键不存在,执行对应逻辑
  print('No city information provided');
}
  • 方法二:直接取值判断null(需注意适用场景)
    如果你的业务逻辑中,city键存在时其值一定不为null,也可以直接取值后判断是否为null:
var city = jsonResponse['city'];
if (city != null) {
  // 处理city存在的情况
} else {
  // 这里可能是键不存在,也可能是键存在但值为null
}

⚠️ 注意:如果city键存在但值本身就是null,这种方法会误判为“键不存在”,所以仅在确定键存在时值非null的场景下使用。

  • 方法三:检查键集合
    你也可以通过Map的keys属性来判断指定键是否在集合中,效果和containsKey()一致:
if (jsonResponse.keys.contains('city')) {
  // city键存在的处理逻辑
}

总结一下,优先使用containsKey(),它能最准确地满足你的需求,避免因值为null带来的判断误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:03:20