如何判断经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
相关产品推荐
相关产品推荐

