2012-03-14 37 views
0

我有一個在線JSON文件看起來是這樣的:用jQuery解析JSON,檢索兩個變量。

[ 
{ 
"j": 0, 
"i": 0, 
"DepartureTime": "\/Date(1331667480000+0100)\/", 
"ArrivalTime": "\/Date(1331668860000+0100)\/", 
"Remarks": [], 
"TravelStages": [ 
    { 
    "ID": 0, 
    "DepartureStop": { 
     "WalkingDistance": 0, 
     "ArrivalTime": null, 
     "AlightingAllowed": false, 
     "DepartureTime": null, 
     "BoardingAllowed": false, 
     "RealTimeStop": true, 
     "Rank": 0, 
     "Lines": null, 
     "StopPoints": [ 
     { 
      "ID": 1, 
      "Name": "1", 
      "X": 608127, 
      "Y": 6645778 
     } 
     ], 
     "Zone": "1", 
     "X": 608133, 
     "Y": 6645768, 
     "ID": 2300500, 
     "Name": "Visperud (i Solheimvn)", 
     "District": "Lørenskog", 
     "Type": 0, 
     "Stops": [], 
     "ShortName": "VIS" 
    }] 

我要的是搶出來的DepartureTimeArrivalTime,我已經看到了如何解析Flickr的JSON一些例子。但我無法弄清楚如何解析這個問題。我也想存儲departureTimearrivalTime在兩個單獨的變量,因爲這兩個內容是以1970年以來的毫秒數衡量的時間。有人可以給我一個關於如何可以做到這一點的提示,我完全是新的Javascript/JSON

+0

的有效子集是不是有效的JSON根據JSONLint.com – xbonez 2012-03-14 14:57:19

+0

這是我的JSON文件的一部分,但它太長時間張貼她。 – 2012-03-14 14:58:14

+0

然後發佈鏈接:-P – nonchip 2012-03-14 15:02:46

回答

1

你的項目中是否有jQuery?如果是這樣,你可以輕鬆地解析JSON字符串這樣

var obj = $.parseJSON(theJsonText); 
alert(obj.DepartureTime); 

如果沒有,我建議包括JSON庫(link)和使用。

+0

但是我怎樣才能指定的網址?只是更換參數? :) – 2012-03-14 15:00:05

+0

什麼網址?你沒有提到你沒有字符串。那麼你需要AJAX才能得到它...請澄清你的問題:你不想分析JSON,你想*下載*並解析JSON。 – nonchip 2012-03-14 15:02:07

+0

他說他有一個在線的JSON文件,因此需要下載它。 – 2012-03-14 15:05:49

1

你可以嘗試這樣的事情,假設你的JSON文件是jsonfile.json

$.getJSON('jsonfile.json', function(data){ 
    alert("Departure Time: "+ data.DepartureTime); 
    alert("Arrival Time: "+ data.ArrivalTime); 
}); 

http://api.jquery.com/jQuery.getJSON/

1
$.getJSON('http://your.domain.example/path/to/file.json', function(data) { 
    departure_time=data.DepartureTime; 
    arrival_time=data.ArrivalTime; 
    do_something_with(departure_time,arrival_time); 
}); 

然後do_something_with(str,str)將與字符串"\/Date(1331667480000+0100)\/""\/Date(1331668860000+0100)\/"被稱爲(在你的例子) 。 您仍然必須將日期轉換爲數字,例如通過運行:

parsed_date=new Date(parseInt(input_string.substr(7))); 
//substr(7) cuts after "\/Date(", and parseInt ignores ")\/" 
//but I don't know how it handles "+0100" 
0

這是一個包含對象的數組,所以你應該能夠設置一些變量等於第一個索引的屬性。使用它就像一個對象,它需要解析..所以要麼eval(thatJson)或$ .parseJSON(thatJson),然後遍歷它。

var responses = [ 
{ 
"j": 0, 
"i": 0, 
"DepartureTime": "\/Date(1331667480000+0100)\/", 
"ArrivalTime": "\/Date(1331668860000+0100)\/", 
"Remarks": [], 
... 
}]; 

var dep = responses[0].DepartureTime; 
var arr = responses[0].ArrivalTime; 
0

根據JSONLint.com,您的字符串不是有效的JSON。然而,這與你的問題所要求的問題不同。

假設你的字符串

var a = '[{"j": 0,"i": 0,"DepartureTime": "/Date(1331667480000+0100)/",  "ArrivalTime": "/Date(1331668860000+0100)/","Remarks": []}]'; 

var obj = $.parseJSON(a); 
console.log(obj[0].ArrivalTime);​