我有一个mysql表,有几列,其中之一是'详细'包含json字符串 - 其中包含6个键。php json_encode()将引号添加到json从mysql中检索
{
"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]
它给了我未定义,因为'详细'后的所有内容都被视为字符串而不是对象。
我知道当我回声json_encode我得到的结果是什么原因导致,在PHP中:
{“日期”:“2016年4月22日 十四点50分24秒”,“速度” : “0”, “详细”:“ {\” ×\ “:[ - 0.02,-O ...](... REST OF OUTPUT ...)} ”}
当我删除大括号括起来的粗体引号时,JSON.parse()JavaScript正确地将此嵌套值视为对象不是字符串。
我的问题是,如何从mySQL中检索所述JSON列,然后在PHP中回显它,因此我不必再次在PHP中对它进行编码 - 它在花括号中添加了引号。
为什么downvote ? – Johnny