【问题标题】:How to access this JSON value?如何访问这个 JSON 值?
【发布时间】:2012-05-10 22:33:25
【问题描述】:

我对 JavaScript 很陌生,我不知道如何访问 JSON 字符串中的某些值。我有这些对象的 lsit 并且我确实通过使用 $.each 函数循环访问它们。但它似乎在这里不起作用。我试过做alert(data.type);,但它给了我undefined变量。

TL;DR:
这是我通过 AJAX 获得的 JSON 字符串。如何使用 jQuery 在 JavaScript 中访问 type 值?

{
    "parent_id": "100003381460677",
    "type": "post",
    "title": "a",
    "body": "b",
    "date_normal": "01 May 2012"
}

【问题讨论】:

  • 您必须先解析 JSON(显式或隐式,参见 stackoverflow.com/questions/8951810/…)。然后你就有了一个 JavaScript 对象,我假设你知道如何使用它。
  • @FelixKling 是的,我不知道我需要解析它。谢谢,现在可以了。

标签: javascript jquery json


【解决方案1】:

parseJSON 帮助你

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

【讨论】:

  • 正确的,我使用的插件确实将它作为字符串返回,而不是 JSON,这就是它未定义的原因。当我将字符串解析为有效的 JSON 时,它现在可以工作了。谢谢。
【解决方案2】:

假设此 JSON 数据来自 AJAX 调用,如果您的服务器未正确配置以发送正确的 Content-Type 响应标头,请确保您已指定正确的数据类型 (json):

$.ajax({
    url: '/foo',
    type: 'POST',
    dataType: 'json',
    success: function(result) {
        alert(result.type);
    }
});

那么传递给成功回调的参数已经代表了一个 javascript 对象(由 jQuery 自动从服务器响应 JSON 字符串反序列化)。一旦你有了一个 javascript 对象,你就可以通过名称直接访问它的属性。在您展示的示例中,它是一个简单的对象,而不是数组。因此,您可以直接按名称访问属性。

【讨论】:

    【解决方案3】:

    假设您使用它作为您的 ajax 回调:

    function(data){ ... }
    

    您可以使用点符号访问它:

    data.type

    【讨论】:

      【解决方案4】:

      如果您使用的是$.getJSON(这将自动将 AJAX 响应解析为 JSON 对象)然后

      $.getJSON("<url>", function(data, status) {
           $.each(data, function(i, elem) {
                console.log(elem.type);
           });
      });
      

      请注意,$.each 中回调的第一个参数是数组中的索引,而不是元素本身(即第二个参数)。

      【讨论】:

        【解决方案5】:

        请看下面两个线程;

        Find value in Json by javascript

        how to get distinct values from json in jquery

        希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-10-23
          • 2012-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-02
          • 1970-01-01
          相关资源
          最近更新 更多