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)
只是使用
$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)
要获取包含对象的数组,您可以为内部项目创建 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)
以防万一,如果您想访问客观化的 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)
归档时间: |
|
查看次数: |
35704 次 |
最近记录: |