【问题标题】:How to parse this json in jquery?如何在jquery中解析这个json?
【发布时间】:2014-01-04 18:25:47
【问题描述】:

我有这个来自 node/express js 的“json return”,但在解析它时有问题。需要一些关于如何做到这一点的建议。

下面是我得到的json字符串。

{
  "comments": [
    {
      "comment": "wew",
      "published": 1388843496312,
      "username": "lol",
      "oauthID": "1234565"
    },
    {
      "oauthID": "1234565",
      "username": "lol2",
      "published": 1388843506898,
      "comment": "wew!!"
    }
  ]
}

下面是我用来解析这个 json 但确实有效的代码。这是 onSuccess 函数

success: function(data, status) {
    data = $.trim(data);
    var obj = jQuery.parseJSON(data);
    alert(obj.comments);
}

编辑:这是我的要求

$.ajax({
    type: "POST",
    url: "/ajax/loadcomments",
    data: {
        ytid: ytkvid
    },
    cache: false,
    success: function(data, status) {
        data = $.trim(data);
        var obj = $.parseJSON(data);
        alert(obj.comments);
    }
});

我需要使用循环打印出 json 中的值。

谢谢!

【问题讨论】:

  • 显示您的整个请求。是dataType:"json"吗?如果是这样,那么它会自动为您解析。
  • 我认为你不需要解析它。你应该学会使用console.log
  • 试试alert(obj.comments[0].comment);
  • @cookiemonster 用我的请求编辑...
  • @cookiemonster 谢谢!你很准!解决了。​​

标签: javascript jquery json node.js


【解决方案1】:

你可以试试这个,

$.each(obj.comments, function(index, value) {
   console.log(index+"::"+value);

});

【讨论】:

    【解决方案2】:

    如果你已经指定ajax调用是json类型,你不用解析字符串,你已经有了一个对象。

    为了遍历所有的 cmets,应该是这样的:

    $.ajax({
        type: "POST",
        url: "/ajax/loadcomments",
        data: {
            ytid: ytkvid
        },
        cache: false,
        success: function(data, status) {
            var comments = data.comments, i = 0, len = comments.length;
            for (; i < len; i += 1) {
                console.log(comments[i].comment);
            }
        }
    });
    

    【讨论】:

    • 你可以使用 $.each 函数代替
    • 嗨@mike 我发现了问题。这是因为这一行 data = $.trim(data);我可以知道为什么没有它它可以工作吗?
    • 因为作为参数传递的数据是对象而不是字符串。 $.trim 用于去除文本开头和结尾的空格,并返回一个字符串。
    • 使用@Krish R 代码 sn-p 因为它更优雅!谢谢大家!
    【解决方案3】:
    $.ajax({
    type: "POST",
    dataType: "json",
    url: "/ajax/loadcomments",
    data: {
        ytid: ytkvid
    },
    cache: false,
    success: function(data, status) {
        alert(data.comments);
    }
    

    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 2013-04-29
      • 2017-06-07
      • 2014-04-16
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多