使用jQuery解析JSON,检索两个变量。

时间:2012-03-14 14:54:24

标签: javascript json

我有一个在线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"
    }]

我想要的是抓住 DepartureTime ArrivalTime ,我看过一些关于如何解析flickr JSON的例子。但我无法弄清楚如何解析这个问题。我还想将 departureTime arrivalTime 存储在两个单独的变量中,因为这两个变量的内容是自1970年以来以毫秒为单位的时间。有人可以给我一个提示a可以做到这一点,对Javascript / JSON来说是全新的

5 个答案:

答案 0 :(得分:1)

你的项目中有jQuery吗?如果是这样,您可以像这样轻松解析JSON字符串

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

如果没有,我建议包括JSON库(link)并使用它。

答案 1 :(得分: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/

答案 2 :(得分: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"

答案 3 :(得分: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;

答案 4 :(得分: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);​