为什么json响应有方括号[关闭]

问题描述 投票:0回答:2

出于某种原因,我必须像这样使用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中解决这个问题?

javascript php json
2个回答
2
投票

你可以在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" 
}]');

0
投票

另外值得一提的是,如果您正在使用ORM,并且您正在使用集合(例如,这是Laravel的常见用例,以及许多其他PHP框架),有两种方法可以返回您正在查找的内容在查询中。

第一:查询元素数组,在这种情况下,只找到一个元素。然后,如果您将其作为响应传递,它将包含数组括号 - 有效的JSON类型。

但是如果你专门查询单个元素(比如在Eloquent的情况下使用:: first()),如果你返回它,它将自动只返回对象,没有任何括号。

编辑:看到你的编辑,是的,mega6382有答案。

© www.soinside.com 2019 - 2024. All rights reserved.