PHP 从嵌套数组中回显 JSON 值

问题描述

我正在从 PHP 页面调用 REST/JSON api。 这是一个成功的 JSON 响应示例:

{
   "code": 0,"message": "","objects":
   {
      "UserRequest::123":
      {
         "code": 0,"message": "created","class": "UserRequest","key": 29,"fields":
         {
            "id": 29,"friendlyname": "R-000029"
         }
      }
   }
}

我只想在页面中回显 id 值,但我无法让它工作。 我试图对响应进行 json_decode

$decoded_response = json_decode($response,true);

如果我 print_r 解码的响应,它看起来像这样:

Array ( [objects] => Array ( [UserRequest::17282] => Array ( [code] => 0 [message] => created [class] => UserRequest [key] => 17282 [fields] => Array ( [id] => 17282 ) ) ) [code] => 0 [message] => )

解决方法

你可以通过这种方式跟随深层元素来获取嵌套的id,

echo $decoded_response['objects']['UserRequest::123']['fields']['id'];

演示: https://3v4l.org/nUtUe

,

但是我怎么知道“UserRequest::123”中的值是什么 这可能就像我的最后一个结果:“UserRequest::17282” 我事先不知道 id 值的嵌套路径。

试过这个:

echo $decoded_response["objects"][0]["UserRequest"]["fields"]["id"];

不工作。

,

设法解决它是这样的:

foreach( $decoded_response['objects'] as $k=>$v) {
    if ( isset($v['key']) ) {
      echo 'Ticket created: ',$v['fields']['friendlyname'],"\r\n";
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...