我有以下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”
答案 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]
。不过,您可以采用通常的方式处理数据结构(即访问属性等)。