使用$ .each()解析复杂的JSON

时间:2013-10-29 07:35:50

标签: javascript jquery json

我有这个JSON(不知道它是字符串还是对象,你可能会这样做):

{
   "palvelut":[
      {
         "palvelu_id":"1",
         "palvelu_nimi":"Perusteita ja varmuutta juhlameikkiin\t",
         "palvelu_kuvaus":"Koulutus kestää 2h, jonka aikana käydään läpi hyvä meikkipohja, kasvojen korostus, poskipunan laitto, klassinen silmien ehostus ja hienostunut mutta simppeli huulimeikki. Suosittelemme että otat oman meikkipussisi sisältöineen mukaan, tai ainakin meikit joita haluat oppia käyttämään. ",
         "palvelu_hinta":"10"
      }
   ],
   "ajat":[
      {
         "aika_id":"1",
         "aika_kello":"14.00",
         "aika_paivamaara":"18.11.2013",
         "aika_paikkoja":"5",
         "aika_palvelu":"1"
      },
      {
         "aika_id":"4",
         "aika_kello":"16.30",
         "aika_paivamaara":"18.11.2013",
         "aika_paikkoja":"5",
         "aika_palvelu":"1"
      }
   ]
}

但是我无法用它做任何事情!我尝试的任何东西,我得到未定义,[对象对象]或根本没有。

例如,如果我尝试使用ajat中的数据向选择字段添加选项,我什么也得不到。

alert(json.ajat.aika_id);

警报未定义。

如何使用$ .each解析此内容?

即使是最简单的例子也不会产生任何结果。

$.each(json, function (key, value) {
    alert(key + ": " + value);
});

3 个答案:

答案 0 :(得分:4)

json.ajat包含一个数组(方括号代表的数组),因此您必须将其编入索引:

alert(json.ajat[0].aika_id);

或者你可以循环它:

$.each(json.ajat, function(key, value) {
    alert(key + ": " + value);
});

答案 1 :(得分:0)

如果是String,则需要将其转换为Object:

json = eval('(' + json + ')');

当它是一个Object时,你会看到“json.ajat”是一个数组,所以“json.ajat.aika_id”不起作用;

使用$ .each:

$.each(json.ajat, function(){alert(this.aika_id + ':' + this.aika_kello)});

答案 2 :(得分:0)

这是另一个用法示例,

var jsonObject = {
   "palvelut":[
      {
         "palvelu_id":"1",
         "palvelu_nimi":"Perusteita ja varmuutta juhlameikkiin\t",
         "palvelu_kuvaus":"Koulutus kestää 2h, jonka aikana käydään läpi hyvä meikkipohja, kasvojen korostus, poskipunan laitto, klassinen silmien ehostus ja hienostunut mutta simppeli huulimeikki. Suosittelemme että otat oman meikkipussisi sisältöineen mukaan, tai ainakin meikit joita haluat oppia käyttämään. ",
         "palvelu_hinta":"10"
      }
   ],
   "ajat":[
      {
         "aika_id":"1",
         "aika_kello":"14.00",
         "aika_paivamaara":"18.11.2013",
         "aika_paikkoja":"5",
         "aika_palvelu":"1"
      },
      {
         "aika_id":"4",
         "aika_kello":"16.30",
         "aika_paivamaara":"18.11.2013",
         "aika_paikkoja":"5",
         "aika_palvelu":"1"
      }
   ]
};

$.each(jsonObject.ajat, function(i,elem){
    console.log(i);
    console.log(elem);
});
接着是小提琴, http://jsfiddle.net/pQxRp/