在使用JSON.parse之前,JSON数组如下所示:
var temp = {
"queries": [
{
"sample_size": 3,
"results": [
{
"name": "temperature",
"tags": {
"Tag": [
"temperature"
]
},
"values": [
[
1452221580000,
27.5
],
[
1452221640000,
27.1
],
[
1452221700000,
27.3
]
]
]}
]}
}
我需要从数组中获取值,因此我使用JSON.parse()。
var jsonparse_temp = JSON.parse(temp);
var dataNum = jsonparse_temp ['queries']['sample_size'];
var timestamp1 = jsonparse_temp ['queries']['results']['value'][0][0]
var value1 = jsonparse_temp ['queries']['results']['value'][0][1]
之后,value1
等于27.5
?
我不确定这种方式是否可以将值赋值给变量。
答案 0 :(得分:1)
它不是一个JSON字符串,它是一个格式良好的对象,无需解析它。有嵌套数组,因此您需要使用索引从数组中获取对象元素。
var temp = {
"queries": [{
"sample_size": 3,
"results": [{
"name": "temperature",
"tags": {
"Tag": [
"temperature"
]
},
"values": [
[
1452221580000,
27.5
],
[
1452221640000,
27.1
],
[
1452221700000,
27.3
]
]
}]
}]
};
// using bracket notation
var dataNum = temp['queries'][0]['sample_size'];
var timestamp1 = temp['queries'][0]['results'][0]['values'][0][0]
var value1 = temp['queries'][0]['results'][0]['values'][0][1];
console.log(dataNum, timestamp1, value1);
// using dot notation
var dataNum1 = temp.queries[0].sample_size;
var timestamp11 = temp.queries[0].results[0].values[0][0]
var value11 = temp.queries[0].results[0].values[0][1];
console.log(dataNum1, timestamp11, value11);
答案 1 :(得分:1)
JSON数组如下所示:
那不是JSON。这是一个JavaScript对象。你的问题中没有任何JSON。
var jsonparse_temp = JSON.parse(temp);
这将返回undefined
,因为temp
不是JSON字符串。
['queries']['sample_size'];
查询是一个数组,而不是一个对象。它没有sample_size
属性。
该数组中的第一个值是 具有该属性的对象。
您需要按顺序访问数据结构的每个级别。你不能跳过等级。
var dataNum = temp.queries[0].sample_size;
答案 2 :(得分:1)
将您的代码更改为:
var dataNum = temp['queries']['sample_size'];
var timestamp1 = temp['queries']['results']['value'][0][0]
var value1 = temp['queries']['results']['value'][0][1]