有没有办法快速检查已解码的JSON对象中的空条目?
例如:
final responseJson = json.decode(response.body);
返回以下内容:
responseJson['result']['mydata']['account'] = 'Joe Doe';
为了检查是否' mydata' part不是null,我必须执行以下操作:
if(responseJson != null)
{
if(responseJson['result'] != null)
{
if(responseJson['result']['mydata'] != null)
...
这真的很难看。如何做到这一点:
if((responseJson != null) && (responseJson['result'] != null) && (responseJson['result']['mydata'] != null))
{
}
在Dart中,如果某些中间项为空(即['结果']),则会出现异常。
有空知道运算符,如:
obj?.method()
但如何将它们与解码的JSON地图对象一起使用?
答案 0 :(得分:4)
如果要设置
中的值responseJson['result']['mydata']['account'] = 'Joe Doe';
这可能适合你
data.putIfAbsent('result', () => {})
.putIfAbsent('mydata', () => {})
.putIfAbsent('account', () => 'John Doe');
阅读时可以使用
if(data.containsKey('result') && data['result'].containsKey('mydata')) {
data['result']['mydata']['account'] = 'Joe Doe';
} else {
print('empty');
}
答案 1 :(得分:1)
您应该做的不是直接使用JSON对象,而是将其转换为Dart类。然后使用null aware operator。
final response = new Response.fromJSON(json.decode(''));
if (response?.result?.myData != null) {
}
您可以使用fromJSON
或json_serializable
生成built_value
类构造函数。
或者您可以手动编写它们:
class Data {
String account;
Data.fromJSON(Map json) {
if (json.containsKey('myData')) {
account = json['myData'];
}
}
}
class Result {
Data myData;
Result({this.myData});
Result.fromJSON(Map json) {
if (json.containsKey('myData')) {
myData = json['myData'];
}
}
}
class Response {
Result result;
Response({this.result});
Response.fromJSON(Map json) {
if (json.containsKey('result')) {
result = json['result'];
}
}
}