出于某种原因,我必须像这样使用JSON:
PHP代码
$json = json_decode([{
"key":1812,
"ticks":0,
"events":"7F7E7F7E7F7E7F7E7F7E7F7E7F7E",
"s1a":"011A00002066C0D9",
"s1c":"011C0149040901496650002830000000000000023344000043410000000300000004C5BD",
"s46":"014600283000CA8D","s10":"011000287182943B",
"s9a":"019A0000000018000000000000000000DC69",
"version" : "18.05"
}]);
// and use $json in loop to populate the table...
那对方括号不允许我在php中用它做任何事情。我的编辑器显示了一个解析错误。我在这样的js中解决了这个问题:
var data = json[0];
var i;
for(i=0; i<json.length; i++){
var html = '';
html += '<td>' + json[i]["key"] + '</td>'
+ '<td>' + json[i]["ticks"] + '</td>'
+ '<td>' + json[i]["events"] + '</td>'
+ '<td>' + json[i]["s1a"] + '</td>'
+ '<td>' + json[i]["s1c"] + '</td>'
+ '<td>' + json[i]["s46"] + '</td>'
+ '<td>' + json[i]["s9a"] + '</td>'
+ '<td>' + json[i]["version"] + '</td>';
}
$(html).appendTo('#bundle');
//var jsonEncoded = JSON.parse(data);
console.log(json.length);*/
但是像这样使用它似乎很糟糕。我怎么能在PHP中解决这个问题?
你可以在PHP中使用json_decode
,如:
<?php
$data = json_decode($json);
var_dump($data[0]->key);
var_dump($data[0]->events);
您只需使用索引0
即可访问它们。 Demo
编辑:您的代码的问题是您没有将json字符串括在引号中。你应该像这样使用它:
$json = json_decode('[{
"key":1812,
"ticks":0,
"events":"7F7E7F7E7F7E7F7E7F7E7F7E7F7E",
"s1a":"011A00002066C0D9",
"s1c":"011C0149040901496650002830000000000000023344000043410000000300000004C5BD",
"s46":"014600283000CA8D","s10":"011000287182943B",
"s9a":"019A0000000018000000000000000000DC69",
"version" : "18.05"
}]');
另外值得一提的是,如果您正在使用ORM,并且您正在使用集合(例如,这是Laravel的常见用例,以及许多其他PHP框架),有两种方法可以返回您正在查找的内容在查询中。
第一:查询元素数组,在这种情况下,只找到一个元素。然后,如果您将其作为响应传递,它将包含数组括号 - 有效的JSON类型。
但是如果你专门查询单个元素(比如在Eloquent的情况下使用:: first()),如果你返回它,它将自动只返回对象,没有任何括号。
编辑:看到你的编辑,是的,mega6382有答案。