Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript php json_encode()为从mysql检索的json添加引号_Javascript_Php_Mysql_Json_Ajax - Fatal编程技术网

Javascript php json_encode()为从mysql检索的json添加引号

Javascript php json_encode()为从mysql检索的json添加引号,javascript,php,mysql,json,ajax,Javascript,Php,Mysql,Json,Ajax,我有一个mysql表,只有很少的列,其中一个是“detailed”,包含json字符串,其中包含6个键 { "x": [ -0.02, -0.04, -0.05 ], "y": [ -0.01, 0, 0, -0.01 ], "z": [ 0.04, 0, -0.03, -0.01

我有一个mysql表,只有很少的列,其中一个是“detailed”,包含json字符串,其中包含6个键

{
    "x": [
        -0.02,
        -0.04,
        -0.05
    ],
    "y": [
        -0.01,
        0,
        0,
        -0.01
    ],
    "z": [
        0.04,
        0,
        -0.03,
        -0.01
    ],
    "roll": [
        0.5,
        0.6,
        0.6
    ],
    "pitch": [
        -3.4,
        -3.3,
        -3.3
    ],
    "yaw": [
        224.2,
        224.2,
        224.2
    ] }
然后在php中,我选择了三列,其中一列称为json列

$sql = "SELECT date, speed, detailed FROM info_table";
$result = $conn->query ( $sql );

if ($result-> num_rows ) {

    while ( $row = $result->fetch_object() ) {
        $rows[] = $row;

    }   
}
echo json_encode($rows);
在JavaScript中,我调用AJAX来检索这些值,然后解析它们

data = JSON.parse(xmlhttp.responseText);
到目前为止还不错,返回了JSON对象,但当我尝试进入嵌套属性时,例如

data[1].detailed.x[1]
它给了我未定义的信息,因为“detailed”之后的所有内容都被视为字符串,而不是对象

我知道这是什么原因,在php中,当我回显json_encode的结果时,我得到:

{“日期”:“2016-04-22 14:50:24,“速度”:“0”,“详细”:{\“x\”:[-0.02,-0…](…其余部分) 输出…}}

当我删除花括号周围的粗体引号时,JSON.parse()JavaScript正确地将该嵌套值视为对象而不是字符串


我的问题是,如何从mySQL中检索所述JSON列,然后在PHP中进行回显,这样我就不必再在PHP中对其进行编码——这会在花括号周围添加所述引号。

如果您在db中已经有JSON,那么您需要在编码整个内容之前对其进行解码:

$sql = "SELECT date, speed, detailed FROM info_table";
$result = $conn->query($sql);

if ($result->num_rows) {

    while ($row = $result->fetch_object()) {
        $row->detailed = json_decode($row->detailed);
        $rows[] = $row;

    }
}
echo json_encode($rows);

您需要在JSON_编码之前解析JSON:

while ( $row = $result->fetch_object() ) {
     $row->detailed = json_decode($row->detailed);
     $rows[] = $row;
}

JSON.parse
这是javascript函数,您使用的是php。