2016-08-25 34 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