【问题标题】:JQuery Parsing JSON arrayJQuery解析JSON数组
【发布时间】:2012-05-14 20:12:56
【问题描述】:

我有一个JSON 输出,如下所示:

["City1","City2","City3"]

我想获取每个城市名称,我该怎么做?

$.getJSON("url_with_json_here",function(json){

});

编辑:

$.getJSON('url_here', function(data){
    $.each(data, function (index, value) {
      $('#results').append('<p>'+value+'</p>');
        console.log(value);
    });
});

上面好像没有用,没有输出值。

【问题讨论】:

  • 您是否使用getJSON() 来获取JSON?因为那时它应该已经被提取了。没有任何代码示例很难提供帮助。你是那种从未写过代码的新手吗?
  • 请看我的编辑,我只是​​对如何从 url 检索项目感到困惑

标签: jquery arrays json jquery-mobile getjson


【解决方案1】:

getJSON() 也会在获取后为您解析 JSON,因此从那时起,您将使用一个简单的 Javascript 数组([] 标记 JSON 中的数组)。该文档还包含有关如何处理获取的数据的示例。

可以获取数组using a for loop中的所有值:

$.getJSON("url_with_json_here", function(data){
    for (var i = 0, len = data.length; i < len; i++) {
        console.log(data[i]);
    }
});

检查您的控制台以查看输出(Chrome、Firefox/Firebug、IE)。

jQuery 还为迭代提供了$.each(),所以你也可以这样做:

$.getJSON("url_with_json_here", function(data){
    $.each(data, function (index, value) {
        console.log(value);
    });
});

【讨论】:

  • 确保 JSON 到达 :)。试试console.log(data);。您在问题中编辑的示例应该可以工作。
  • @user1083813 为您创建了一个little simulation,以证明您的代码有效。
  • 好的,我认为问题在于 url,我使用 php json_encode 来输出 JSON,这对于 $.getJSON 方法是否足够?
  • @user1083813 很容易测试。在浏览器中写入 URL(您将在 getJSON 中使用)并检查 JSON。 json_encode() 应该足够了,但是您的代码可能有错误或其他回显的内容。
  • 使用 OP 的数组,$.each($.parseJSON(data), function (index, value) 的运气会更好。
【解决方案2】:

使用parseJSON method:

var json = '["City1","City2","City3"]';
var arr = $.parseJSON(json);

然后你有一个包含城市名称的数组。

【讨论】:

  • 非常感谢,所以如果我将上面的方法与 $.getJSON 方法一起使用,在从 URL 成功获取 JSON 后,这段代码会进入函数运行吗?
  • @user1083813:如果您使用 AJAX 获取 JSON,则应指定数据类型为 JSON。然后会自动解析,成功回调会得到一个对象或数组,而不是字符串。如果你使用getJSON方法,数据类型会自动设置为JSON,所以你不必解析结果。
  • 这是我需要的。我已经在会话中有 JSON 字符串,不需要 AJAX 获取。谢谢。
  • 当与接受的答案结合使用时,此句柄是 OP 的数组。
【解决方案3】:
var dataArray = [];
var obj = jQuery.parseJSON(yourInput);

$.each(obj, function (index, value) {
    dataArray.push([value["yourID"].toString(), value["yourValue"] ]);
});

这对我很有帮助 :-)

【讨论】:

    【解决方案4】:
    var dataArray = [];
    var obj = jQuery.parseJSON(response);
      for( key in obj ) 
      dataArray.push([key.toString(), obj [key]]);
    };
    

    【讨论】:

      【解决方案5】:

      parse.JSON

      var obj = jQuery.parseJSON( '{ "name": "John" }' );
      alert( obj.name === "John" );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-03
        • 2013-03-22
        • 2010-12-09
        • 2023-04-11
        相关资源
        最近更新 更多