2013-04-05 115 views
-3

我有和json數據從服務器獲取,努力解析JavaScript中的json,因爲它不是一個簡單的json。下面是示例需要解析複雜的Json

[ 
    { 
     "target":"collectd.matrix.oracle.avg_resp_time", 
     "datapoints":[ 
     [8.0, 1365158480], 
     [null, 1365158490], 
     [null, 1365158500], 
     [null, 1365158510], 
     [null, 1365158520], 
     [null, 1365158530], 
     [8.0, 1365158540], 
     [null, 1365158550], 
     [null, 1365158560], 
     [null, 1365158570], 
     [null, 1365158580], 
     [null, 1365158590], 
     [8.0, 1365158600], 
     [null, 1365158610], 
     [null, 1365158620], 
     [null, 1365158630], 
     [null, 1365158640], 
     [null, 1365158650], 
     [8.0, 1365158660], 
     [null, 1365158670], 
     [null, 1365158680], 
     [null, 1365158690], 
     [null, 1365158700], 
     [null, 1365158710], 
     [null, 1365158720], 
     [null, 1365158730], 
     [null, 1365158740], 
     [null, 1365158750], 
     [null, 1365158760], 
     [null, 1365158770] 
     ] 
    } 
] 

在這裏,我還需要捕捉的每個字段的值,像eg:X=8.0,Y=1365158540

需要一些幫助或邏輯來解析這一點。

感謝, sohan

+3

的數組,它是直線前進JSON,任何JSON解析器能夠解析它。 – Quentin 2013-04-05 10:55:48

+0

jslint.com批准提供的json。 [小提琴與解析對象的控制檯輸出](http://jsfiddle.net/nG9As/) – Imperative 2013-04-05 10:56:01

+0

我不是一個用戶界面,JS開發人員,但你是一些要求,所以努力建立邏輯arount它 – Sohan 2013-04-05 10:57:47

回答

2
var jsonData = JSON.parse(data) 

其中

data = '[{"target": "collectd.matrix.oracle.avg_resp_time", "datapoints": [[8.0, 1365158480], [null, 1365158490], [null, 1365158500], [null, 1365158510], [null, 1365158520], [null, 1365158530], [8.0, 1365158540], [null, 1365158550], [null, 1365158560], [null, 1365158570], [null, 1365158580], [null, 1365158590], [8.0, 1365158600], [null, 1365158610], [null, 1365158620], [null, 1365158630], [null, 1365158640], [null, 1365158650], [8.0, 1365158660], [null, 1365158670], [null, 1365158680], [null, 1365158690], [null, 1365158700], [null, 1365158710], [null, 1365158720], [null, 1365158730], [null, 1365158740], [null, 1365158750], [null, 1365158760], [null, 1365158770]]}]'; 

jsonData[0]['datapoints']是所有數據點

Reference for JSON.parse

2

天然JSON.parse()應該只是罰款。在舊版瀏覽器中使用json2.js以實現向後兼容。這裏有一個例子:

var data = JSON.parse(yourJsonGoesHere), 
    datapoints = data[0].datapoints, 
    i; 

for (i = 0; i < datapoints.length; ++i) { 
    console.log('x:' + datapoints[i][0] + ', y:' + datapoints[i][1]); 
} 
+0

data [0] .datapoints – 2013-04-05 11:06:03

+0

@kidmenot - thanks,fixed! – jwueller 2013-04-05 11:07:43

+1

+1 json2.js for JSON.parse向後兼容性 – 2013-04-05 11:12:24

1

,你可以再補充datatype:json在你的Ajax調用,如果你正在通過Ajax響應

OR

可以使用http://api.jquery.com/jQuery.parseJSON/

var obj = jQuery.parseJSON(jsonString) 
+0

[$ .parseJSON vs JSON.parse](http://stackoverflow.com/questions/10362277/jquery-parsejson-vs-json-解析)OP沒有jQuery標籤 – 2013-04-05 11:09:20