【问题标题】:Loop and get key/value pair for JSON array using jQuery使用 jQuery 循环并获取 JSON 数组的键/值对
【发布时间】:2011-12-13 05:54:31
【问题描述】:

我希望遍历 JSON 数组并显示键和值。

应该是以下帖子的简化版,但我的语法似乎不正确:jQuery 'each' loop with JSON array

我也看到了帖子Get name of key in key/value pair in JSON using jQuery?,但它似乎也有很多代码用于一个简单的活动。

这说明了我在寻找什么(但它不起作用):

var result = '{"FirstName":"John","LastName":"Doe","Email":"johndoe@johndoe.com","Phone":"123 dead drive"}';
$.each(result, function(k, v) {
             //display the key and value pair
            alert(k + ' is ' + v);
        });

没有强制性的 jQuery 要求,但它是可用的。如果它减少了所需的代码,我也可以重组 JSON。

【问题讨论】:

  • 您必须先将 JSON 解析为 JavaScript 对象。

标签: javascript jquery json


【解决方案1】:

您有一个表示 JSON 序列化 JavaScript 对象的字符串。您需要将其反序列化回 JavaScript 对象,然后才能遍历其属性。否则,您将遍历该字符串的每个单独字符。

var resultJSON = '{"FirstName":"John","LastName":"Doe","Email":"johndoe@johndoe.com","Phone":"123 dead drive"}';
var result = $.parseJSON(resultJSON);
$.each(result, function(k, v) {
    //display the key and value pair
    alert(k + ' is ' + v);
});

Live demo.

【讨论】:

  • 优秀。我添加了 var result = $.parseJSON(resultJSON);现在它可以工作了。
  • @Darin 如何获取“索引”值?
【解决方案2】:
var obj = $.parseJSON(result);
for (var prop in obj) {
    alert(prop + " is " + obj[prop]);
}

【讨论】:

    【解决方案3】:

    如果是这样的一个数组,您可以直接获取值:

    var resultJSON = '{"FirstName":"John","LastName":"Doe","Email":"johndoe@johndoe.com","Phone":"123 dead drive"}';
    var result = $.parseJSON(resultJSON);
    result['FirstName']; // return 'John'
    result['LastName'];  // return ''Doe'
    result['Email']; // return 'johndoe@johndoe.com'
    result['Phone'];  // return '123'
    

    【讨论】:

      【解决方案4】:

      以下内容应该适用于 JSON 返回的字符串。它也适用于关联的数据数组。

      for (var key in data)
           alert(key + ' is ' + data[key]);
      

      【讨论】:

      • JSON 字符串必须被解析成JSON 对象。
      【解决方案5】:

      解析 JSON 字符串,您可以遍历键。

      var resultJSON = '{"FirstName":"John","LastName":"Doe","Email":"johndoe@johndoe.com","Phone":"123 dead drive"}';
      var data = JSON.parse(resultJSON);
      
      for (var key in data)
      {
          //console.log(key + ' : ' + data[key]);
          alert(key + ' --> ' + data[key]);
      }

      【讨论】:

        【解决方案6】:

        这个问题的最佳和完美解决方案:

        我尝试了带有 Ajax 成功响应的 jQuery,但它不起作用,所以我发明了自己的,最后它起作用了!

        Click here to see the full solution

        var rs = '{"test" : "Got it perfect!","message" : "Got it!"}';
        eval("var toObject = "+ rs + ";");
        alert(toObject.message);
        

        【讨论】:

          猜你喜欢
          • 2021-01-15
          • 2020-02-01
          • 2021-07-21
          • 2016-01-10
          • 1970-01-01
          • 2012-10-14
          • 1970-01-01
          • 2019-06-21
          • 1970-01-01
          相关资源
          最近更新 更多