【发布时间】:2015-07-29 15:47:15
【问题描述】:
我的问题很简单,至少我希望如此,但我就是找不到解决方案。我有一个 JSON 字符串,它是从对服务器的 get 请求中获得的。
我的 JSON 示例:
"body":[
{
"_id":"70:ee:50:05:00:aa",
"place":{
"location":[
2.4358958,
49.503012
],
"altitude":89,
"timezone":"Europe/Paris"
},
"mark":8,
"measures":{
"02:00:00:04:f8:6a":{
"res":{
"1431926951":[
7.9,
83
]
},
"type":[
"temperature",
"humidity"
]
},
"70:ee:50:05:00:aa":{
"res":{
"1431932787":[
1009.4
]
},
"type":[
"pressure"
]
}
},
"modules":[
"02:00:00:04:f8:6a"
]
},
我需要访问温度值,所以按照这个例子我会这样做:$value = body->measures->02:00:00:04:f8:6a->res->1431926951[0].
我知道我不能这样做:measures->02:00:00:04:f8:6a。很酷的是,这样做可以解决这个困难:$module = body->modules[0],然后我可以使用这个变量。
所以它看起来像这样:body->measures->$module->res->1431926951[0].
我似乎无法做的是最后一步:res->1431926951[0]。这个数字似乎完全随机我在 JSON 的其他任何地方都找不到这个值,所以我不能使用与 02:00:00:04:f8:6a. 相同的技巧
所以我的问题是如何在不知道其名称的情况下访问位于对象“1431926951”内的数组的第一个值?
非常感谢您花时间帮助我。
编辑:这是我在 PHP 中使用的代码
$results = json_decode($resp);
foreach($results->body as $result){
$id = $result->_id;
$lat = $result->place->location[0];
$lng = $result->place->location[1];
$module = $result->modules[0];
$type = $result->measures->$module->type[0];
$value = "1431926951";
//$test = $result->measures->$module->res->$value[0];
/*$res = $result->measures[$result->measures[0]]->res;
$test = $res[Object.keys($res)[0]][0];*/
echo 'Id: '.$id.' - Lat: '.$lat.' - Lng: '.$lng.' - test: '.$test."<br>";
}
【问题讨论】:
-
为什么你不使用 JSON.parse(json)
标签: php arrays json object getjson