2016-08-25 212 views
0

之前使用JSON.parse,一个JSON阵列如下:使用JSON.parse(),如何在多维数组中获取值?

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? 我不确定这种方式可以签署变量的价值。

+3

'temp'是一个Javascript对象。 ['JSON.parse'](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)需要JSON格式的字符串。 – Xotic750

+0

'temp.queries.samplesize','temp.queries.results [0] .values [1] [0]' –

+0

此外,'results'是一个数组,因此在您的代码中(访问原始对象时) '['results']'后面的[0]'丢失。 – Sirko

回答

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);

+0

没有解析,我怎么能看到这个值?我尝试使用'temp.queries.results.values',但没用。 –

+0

@ JK.Lin:你可以用两种方式......点符号和括号表示 –

+0

你可以制作一个样品吗? –

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; 
0

你的代码改成这样:

var dataNum = temp['queries']['sample_size']; 
 
var timestamp1 = temp['queries']['results']['value'][0][0] 
 
var value1 = temp['queries']['results']['value'][0][1]

+0

该对象不是[JSON](https://en.wikipedia。org/wiki/JSON),但是一个结构良好的Javascript对象,可以通过[标准访问器(键)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects)立即访问和[带索引的数组](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Accessing_array_elements)。 – Xotic750