PHP数组到Json对象

Has*_*Ila 13 php arrays json object

我需要将PHP数组转换为json,但我没有得到我期望的结果.我希望它是一个可以使用数字索引轻松导航的对象.这是一个示例代码:

$json = array();
$ip = "192.168.0.1";
$port = "2016";
array_push($json, ["ip" => $ip, "port" => $port]);
$json = json_encode($json, JSON_PRETTY_PRINT);
// ----- json_decode($json)["ip"] should be "192.168.0.1" ----
echo $json;
Run Code Online (Sandbox Code Playgroud)

这就是我得到的

[  
   [  
      "ip" => "192.168.0.1",
      "port" => "2016"
   ]
]
Run Code Online (Sandbox Code Playgroud)

但我想得到一个对象而不是数组:

{  
   "0": {  
      "ip": "192.168.0.1",
      "port": "2016"
   }
}
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

jba*_*ord 25

你想要json_encode($json, JSON_FORCE_OBJECT).

JSON_FORCE_OBJECT顾名思义,该标志强制json输出为一个对象,即使它通常表示为一个数组.

您还可以使用array_push一些稍微清洁的代码:

$json[] = ['ip' => $ip, 'port' => $port];
Run Code Online (Sandbox Code Playgroud)


Ves*_*shi 8

只是使用

$response=array();
$response["0"]=array("ip"     => "192.168.0.1",
                     "port"   => "2016");
$json=json_encode($response,JSON_FORCE_OBJECT);
Run Code Online (Sandbox Code Playgroud)


Cih*_*gun 5

要获取包含对象的数组,您可以为内部项目创建 stdClass() 而不是数组,如下所示;

<?PHP

    $json = array();
    $itemObject = new stdClass();
    $itemObject->ip = "192.168.0.1";
    $itemObject->port = 2016;

    array_push($json, $itemObject);
    $json = json_encode($json, JSON_PRETTY_PRINT);
    echo $json;

?>
Run Code Online (Sandbox Code Playgroud)

一个工作示例http://ideone.com/1QUOm6


小智 5

为了获取一个对象而不仅仅是一个 json 字符串,请尝试:

$json = json_decode(json_encode($yourArray));
Run Code Online (Sandbox Code Playgroud)

如果您还想对嵌套数组进行 jsonise,请执行以下操作:

$json =json_decode(json_encode($yourArray, JSON_FORCE_OBJECT));
Run Code Online (Sandbox Code Playgroud)


MR_*_*DEV 5

以防万一,如果您想访问客观化的 json 整个数据或特定键值:

PHP端

 $json = json_encode($yourdata, JSON_FORCE_OBJECT);
Run Code Online (Sandbox Code Playgroud)

JS端

 var json = <?=$json?>;
 console.log(json);            // {ip:"192.168.0.1", port:"2016"}
 console.log(json['ip']);      // 192.168.0.1
 console.log(json['port']);    // 2016
Run Code Online (Sandbox Code Playgroud)