【发布时间】:2020-06-06 05:39:16
【问题描述】:
问题:
i) 检查 Dart 中的普通 Class 对象是否具有特定属性时?
ii) 从 api 解码 JSON 响应正文时,如何检查对象是否在 DART 中具有特定属性?
例如在 Javascript 中,有“hasOwnProperty”
if (obj.hasOwnProperty('property')) {
// do something
}
【问题讨论】:
问题:
i) 检查 Dart 中的普通 Class 对象是否具有特定属性时?
ii) 从 api 解码 JSON 响应正文时,如何检查对象是否在 DART 中具有特定属性?
例如在 Javascript 中,有“hasOwnProperty”
if (obj.hasOwnProperty('property')) {
// do something
}
【问题讨论】:
您可以使用bool containsKey(Object key);。结帐documentation 了解更多信息。您还可以在这里找到相关的post。
if (obj.containsKey('property')) {
// do something
}
【讨论】:
Dart 是强类型的;在调用方法之前,您应该检查 Object 是否属于您想要的类型:
if (obj is ClassWithProperty) {
print(obj.property);
}
我不推荐它,但您可以使用dynamic 类型禁用类型检查:
var hasProperty = false;
try {
(obj as dynamic).property;
hasProperty = true;
} on NoSuchMethodError {
}
【讨论】:
object is Map(object is Map<dynamic, dynamic> 的简写)检查对象是否为Map。
runtimeType 而不是对象本身,它给出了这样的错误:var obj = {"abc": 123}; if(obj.runtimeType is Map) 感谢您的帮助。