在PHP中获取JSON数据

时间:2010-03-24 21:08:37

标签: php json

我有这样的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"
?>

可以吗?

1 个答案:

答案 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);来获取)

即。您正在获取一个对象,其中hellohello2作为属性名称。


这意味着这段代码:

$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,关于此。