使用jQuery解析JSON对象数组

时间:2012-08-04 03:07:16

标签: javascript jquery arrays json parsing

我要做的是解析这个JSON:http://www.theunjust.com/test/container.php

现在就让它显示......

这是我目前的代码(全部搞砸了)

$(document).ready(function(){
    var jsonurl = "container.php";
  $.getJSON(jsonurl, function(data) {         
    $.each(data.encompass,function(i,valu){
    var content,
    cont = '',
    tainers = valu.containers;

  $.each(tainers, function (i) {
    var tid = tainers[i].TID,
    top = tainers[i].Top,
    cat = tainers[i].Category,
    date = tainers[i].Date,
    icon = tainers[i].Icon,
    clink = tainers[i].ContainerLink,
    uid = tainers[i].UniqueID;

        cont += '<a href="' + clink + '">' + uid + '</a> ';
        $('ul').append('<li>' + tid + ' - ' + top + ' - ' + cat + ' - ' + date + ' - ' + icon + ' - ' + clink + ' - ' + uid + ' (' + cont + ')</li>');
    }); 
  }); 
}); 
});

我知道代码没有意义,这对我来说更像是一种学习经验,而不是一种有效的工具。问题可能出在JSON数据本身,如果是这种情况,您会推荐什么stackoverflow Web服务帖子?

我最终的目标是运行多个Web服务并将它们组合起来......所以container.php加载并具有包装div所需的所有信息,然后entries.php加载并填充div是由容器生成的。

我目前正在学习jQuery和老实说,我还没达到这个水平,但我很快就到了那里。

我非常感谢您的帮助,并希望您能指出我成为JSON解析专业人士的方向!

3 个答案:

答案 0 :(得分:1)

containers包含单个节点。所以只需使用

$.each(tainers, function (i, v) {
    var tid = v.TID,
    top = v.Top,
    cat = v.Category,
    date = v.Date,
    icon = v.Icon,
    clink = v.ContainerLink,
    uid = v.UniqueID;

    cont += '<a href="' + clink + '">' + uid + '</a> ';
    $('ul').append('<li>' + tid + ' - ' + top + ' - ' + cat + ' - ' + date + ' - ' + icon + ' - ' + clink + ' - ' + uid + ' (' + cont + ')</li>');
});

答案 1 :(得分:1)

该程序显示如何读取json并将数据存储到文本框中:

$(document).ready(function(){
  $.getJSON("Test.json",function(data){
       $.each(data,function(key,value){
           alert(data[key].attrib1name);
           alert(data[key].attrib2name); 
           $('input').val(data[key].enterpriseName);
           activities=data[key].activities;
           console.log(value);
       });
   });    
});

答案 2 :(得分:0)

对于初学者来说,不要使用jQuery作为锤子。这是一个核心JavaScript问题。

在JavaScript中只能解析两种结构。数组和对象。

对于对象,请使用:

for(var x in obj){ alert(x + ':' + obj[x]) } //would alert <property name>:<property value>

对于数组,使用类似于PHP的循环。在JS中,while循环很适合数组:

var i = someArray.length;
//if you don't want to loop backwards just do someArray.reverse()

while(i--){
   //do stuff to someArray[i] here
}

JSON只是JavaScript中的对象文字。最简单的对象类型。只是一个坚持物业的地方。属性可以是数组,值或其他对象。唯一需要注意的是引用对象中其他属性的对象(在尝试解析时导致无限循环)这对于JSON来说是一件非常愚蠢的事情(甚至不确定会通过验证)。