我有这样的JSON数据:
{
"hello":
{
"first":"firstvalue",
"second":"secondvalue"
},
"hello2":
{
"first2":"firstvalue2",
"second2":"secondvalue2"
}
}
我知道如何从对象“first”(firstvalue)和second(secondvalue)中检索数据但是我想循环通过这个对象,结果得到值:“hello”和“hello2”...
这是我的PHP代码:
<?php
$jsonData='{"hello":{"first":"firstvalue","second":"secondvalue"},"hello2":{"first2":"firstvalue2","second2":"secondvalue2"}}';
$jsonData=stripslashes($jsonData);
$obj = json_decode($jsonData);
echo $obj->{"hello"}->{"first"}; //result: "firstvalue"
?>
可以吗?
答案 0 :(得分:3)
JSON在解码后应该会得到这样的对象:
object(stdClass)[1]
public 'hello' =>
object(stdClass)[2]
public 'first' => string 'firstvalue' (length=10)
public 'second' => string 'secondvalue' (length=11)
public 'hello2' =>
object(stdClass)[3]
public 'first2' => string 'firstvalue2' (length=11)
public 'second2' => string 'secondvalue2' (length=12)
(您可以使用var_dump($obj);
来获取)
即。您正在获取一个对象,其中hello
和hello2
作为属性名称。
这意味着这段代码:
$jsonData=<<<JSON
{
"hello":
{
"first":"firstvalue",
"second":"secondvalue"
},
"hello2":
{
"first2":"firstvalue2",
"second2":"secondvalue2"
}
}
JSON;
$obj = json_decode($jsonData);
foreach ($obj as $name => $value) {
echo $name . '<br />';
}
会得到你:
hello
hello2
这将有效,因为foreach
可用于迭代对象的属性 - 请参阅Object Iteration,关于此。