gpt4 book ai didi

php - 如何在不知道其名称的情况下访问 JSON 对象(并且不在数组中)

转载 作者:行者123 更新时间:2023-12-02 04:21:15 24 4
gpt4 key购买 nike

我的问题相当简单,至少我希望如此,但我就是找不到解决方案。我有一个 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>";
}

最佳答案

您可以通过Object.keys访问JavaScript 中属性的名称。

var res = obj.body.measures[ obj.body.modules[0] ].res;
console.log( res[ Object.keys(res)[0] ][0]); // prints 7.9

See demo

编辑(PHP版本,只有2行):

与 PHP 相同,但使用 keystdClass ( json_decode 返回 stdClass )

$res = $obj->body->measures->{ $obj->body->modules[0] }->res;
echo $res->{ key( (array) $res ) }[0]; // prints 7.9

See demo

希望有帮助。

关于php - 如何在不知道其名称的情况下访问 JSON 对象(并且不在数组中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30298123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com