PHP JSON数组到Javascript解码

时间:2018-10-15 14:15:14

标签: javascript php json

我有以下Influxdb返回的json,我可以使用PHP对其进行解码,而不会出现任何问题,即我使用以下代码:

$json_result = json_decode($json_result, true);
$http_result_series_0 = $json_result["results"][0]["series"][0] ["values"][0][5];

现在,我想使用javascript进行解码,以便动态填充表格。但是,无论我如何尝试,都无法正常工作。我知道javascript中也有类似的方式来解码数组,即:

json_result.results[0].series[0].values[0][5]

json:

"{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "default_lte_stick_1_test.com_http_response",
                    "tags": {
                        "server": "https://twitter.com"
                    },
                    "columns": [
                        "time",
                        "host",
                        "http_response_code",
                        "method",
                        "response_time",
                        "result",
                        "result_code",
                        "result_type",
                        "status_code",
                        "tag1",
                        "tag2"
                    ],
                    "values": [
                        [
                            "2018-10-12T11:19:12Z",
                            "xps",
                            200,
                            "GET",
                            1.358607871,
                            "success",
                            0,
                            "success",
                            "200",
                            "test.com",
                            "LTE"
                        ]
                    ]
                },
                {
                    "name": "default_lte_stick_1_test.com_http_response",
                    "tags": {
                        "server": "https://google.com"
                    },
                    "columns": [
                        "time",
                        "host",
                        "http_response_code",
                        "method",
                        "response_time",
                        "result",
                        "result_code",
                        "result_type",
                        "status_code",
                        "tag1",
                        "tag2"
                    ],
                    "values": [
                        [
                            "2018-10-12T11:19:10Z",
                            "xps",
                            301,
                            "GET",
                            0.051518655,
                            "success",
                            0,
                            "success",
                            "301",
                            "test.com",
                            "LTE"
                        ]
                    ]
                },
                {
                    "name": "default_lte_stick_1_test.com_http_response",
                    "tags": {
                        "server": "https://amazon.com"
                    },
                    "columns": [
                        "time",
                        "host",
                        "http_response_code",
                        "method",
                        "response_time",
                        "result",
                        "result_code",
                        "result_type",
                        "status_code",
                        "tag1",
                        "tag2"
                    ],
                    "values": [
                        [
                            "2018-10-12T11:19:11Z",
                            "xps",
                            301,
                            "GET",
                            0.536477796,
                            "success",
                            0,
                            "success",
                            "301",
                            "test.com",
                            "LTE"
                        ]
                    ]
                }
            ]
        }
    ]
}
"

我做错了什么?感谢您的帮助。谢谢!

编辑:

Influxdb API返回格式精美的JSON。目前,我使用以下命令输出整个JSON:

var json_result = '<?php echo $javascript_json_result;?>'; 
document.getElementById("jsonoutput").innerHTML = JSON.parse(json_result);

输出整个json。但是我只想输出单个值。

document.getElementById("jsonoutput").innerHTML = json_result.results[0].series[0].values[0][5] 

解决以下错误:

  

e2e_check_new.php:172未捕获的TypeError:无法读取e2e_check_new.php:172处未定义的属性“ 0”

1 个答案:

答案 0 :(得分:1)

  

我做错了什么?

var json_result = '<?php echo $javascript_json_result;?>'; 

您试图通过将JavaScript封装在'中来将JSON作为字符串输出,但是您并未转义JSON中在JavaScript中具有特殊含义的任何字符(例如\或换行或'-看起来您的JSON中肯定至少有换行)。


不要尝试生成JSON字符串。只需直接输出JSON,即可将其视为JavaScript对象文字。

var my_object = <?php echo $javascript_json_result; ?>; 
document.getElementById("jsonoutput").innerHTML = my_object;

…当然,这会将对象转换为无用的字符串[Object object]。不过,您可以采用通常的方式处理数据结构(即访问属性等)。