jQuery解析JSON多维数组

Posted

技术标签:

【中文标题】jQuery解析JSON多维数组【英文标题】:jQuery parse JSON multidimensional array 【发布时间】:2011-01-30 01:53:17 【问题描述】:

我有一个这样的 JSON 数组:


  "forum":[
    
      "id":"1",
      "created":"2010-03-19 ",
      "updated":"2010-03-19 ","user_id":"1",
      "vanity":"gamers",
      "displayname":"gamers",
      "private":"0",
      "description":"All things gaming",
      "count_followers":"62",
      "count_members":"0",
      "count_messages":"5",
      "count_badges":"0",
      "top_badges":"",
      "category_id":"5",
      "logo":"gamers.jpeg",
      "theme_id":"1"
    
  ]

我想使用 jQuery .getJSON 来返回每个数组值的值,但我不确定如何访问它们。

到目前为止,我有这个 jQuery 代码:

$.get('forums.php', function(json, textStatus) 
            //optional stuff to do after success
            alert(textStatus);
            alert(json);

        );

如何用 jQuery 做到这一点?

【问题讨论】:

您在数组中有一个大对象(实际上只包含一个项目,即对象)。这可能是术语的混淆。目前还不清楚你想要结束什么。请详细说明。你想结束什么?将每个对象属性显示为键=值对?阅读本指南可能会帮助您进一步了解正确的术语:hunlock.com/blogs/…(甚至可以回答您自己的问题)。 对不起,我应该提到论坛数组有多个子数组项 我明白了,我相应地更新了我的答案。 【参考方案1】:

JSON 中的 表示一个对象。每个对象的属性都由key:value 表示,并以逗号分隔。属性值可以通过使用句点运算符的键访问,例如json.forum。 JSON 中的[] 表示一个数组。数组值可以是任何对象,并且值以逗号分隔。要遍历数组,请使用带有索引的标准 for 循环。要迭代对象的属性而不直接通过键引用它们,您可以使用 for in 循环:

var json = "forum":["id":"1","created":"2010-03-19 ","updated":"2010-03-19 ","user_id":"1","vanity":"gamers","displayname":"gamers","private":"0","description":"All things gaming","count_followers":"62","count_members":"0","count_messages":"5","count_badges":"0","top_badges":"","category_id":"5","logo":"gamers.jpeg","theme_id":"1"];

var forum = json.forum;

for (var i = 0; i < forum.length; i++) 
    var object = forum[i];
    for (property in object) 
        var value = object[property];
        alert(property + "=" + value); // This alerts "id=1", "created=2010-03-19", etc..
    

如果您想以 jQueryish 方式执行此操作,请获取 $.each()

$.each(json.forum, function(i, object) 
    $.each(object, function(property, value) 
        alert(property + "=" + value);
    );
);

我使用了与“纯 javascript”方式相同的变量名,以便您更好地理解 jQuery 的“幕后”功能。希望这会有所帮助。

【讨论】:

好的,所以我有这个,但是当我运行它时,它在我的 标签中打印出 Undefined var url ="forums.json"; $.getJSON (url, function(data) alert("数据加载"); $.each(data, function(i, item) $("#forums").html(" "+ item. displayname +"") alert("世界列表"); ); ); $.each(data, ... 替换为$.each(data.forum, ...,与示例完全相同。在我的示例中,您的 datajson。 JSON 是一个对象。 forum 是一个包含数组的属性。【参考方案2】:

这应该可以正常工作。只需使用$.getJSON 而不是$.get

【讨论】:

是的,但是我如何迭代每个值说我想获得“displayname”:“gamers”并回显应该是什么玩家 您的 json 变量将是一个 JavaScript 对象。正常获取:for (var user in json.forum) alert(user.displayname); .

以上是关于jQuery解析JSON多维数组的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 访问多维 JSON 数组中的数据

解析没有键的多维 JSON 数组

用 Java 解析 JSON 多维数组

PHP/jQuery - 如何将多维 PHP 数组转换为 JSON 字符串?

jQuery Form - 序列化为多维数组?

多维数组和 UITableView