Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google Dart JSON提取_Json_Dart - Fatal编程技术网

Google Dart JSON提取

Google Dart JSON提取,json,dart,Json,Dart,我试图从JSON中的嵌套数组中提取数据,但似乎无法获得正确的值。现在,当我只需要操作系统的名称时,嵌套operatingSystem数组的所有值都会在表中打印出来。我的代码在下面,如果您需要更多信息,请告诉我 省道: 列表资产列表; //LinkedHashMap保留密钥输入顺序 LinkedHashMap dataMap=新LinkedHashMap(); 用于(资产列表中的var d){ HashMap rowMap=新的HashMap(); 字符串domainId=d[“进程”][“进程I

我试图从JSON中的嵌套数组中提取数据,但似乎无法获得正确的值。现在,当我只需要操作系统的名称时,嵌套operatingSystem数组的所有值都会在表中打印出来。我的代码在下面,如果您需要更多信息,请告诉我

省道:

列表资产列表;
//LinkedHashMap保留密钥输入顺序
LinkedHashMap dataMap=新LinkedHashMap();
用于(资产列表中的var d){
HashMap rowMap=新的HashMap();
字符串domainId=d[“进程”][“进程ID”];
//第一个元素,其余元素依次出现
dataMap[domainId]=行映射;
行映射[“域名ID”]=域名ID;
//仍不检查是否为null
如果(d[“资产”][“操作系统”]。包含密钥(“名称”)){
行映射[“操作系统”]=d[“资产”][“操作系统”][“名称”];
}否则{
行映射[“操作系统”]=d[“资产”][“操作系统”];
}
//打印出表数据以进行调试
打印(rowMap.toString());
印刷品(d);
JSON:

“资产”:{
“资产净值”:“8a498592469189660146918d9e2f0000”,
“oplock”:0,
“域名”:“,
“纬度”:58.92,
“ipAddress”:“4.4.4.4”,
“经度”:-37.23,
“操作系统”:{
“osId”:2,
“oplock”:0,
“名称”:“Windows 8”
}
}

您需要更深一层。您正在打印对象的operatingSystem标头,但operatingSystem标头有3个属性

corect语法是

json["asset"]["operatingSystem"]["name"];
你也可以这样做,我认为这对于JS和JSON来说更标准

json.asset.operatingSystem.name

欢迎使用StackOverflow!您可以添加代码,说明如何将JSON输入到
assetList
中吗?我想知道,当它实际上是一个映射时,您为什么称它为
assetList
。什么是“operatingSystem数组”?您可以编辑并改进您的问题吗?您打印哪个变量?什么值正在打印/正在打印,您实际希望打印什么值。operatingSystem映射位于资产映射中的JSON中。我希望operatingSystem名称不会打印所有操作系统详细信息。我可以成功打印除此之外的所有内容。请参阅我上面的编辑。下面的答案似乎是正确的,但很难验证se您的代码仍然没有显示如何将JSON加载到
assetList
中。好的,似乎我需要在operatingSystem映射上执行空检查。您的意思是什么?没有为每个资产设置“name”?它在我的计算机上起作用。记录您的JSON以确保获得预期的对象,并确保验证您使用的是有效的JSON(您可以在www.jsonlint.com上执行此操作)。此外,请确保在我的示例代码中将“json”替换为代码中的“d”)(好的,那么这个如何,我如何检查operatingSystem名称是否为null?如果是,我可以将其替换为文本“NA”。您可以使用“if(!object)”或“if(object==null)”即可