Javascript 如何从JSON中的Ajax响应中获取objct信息

Javascript 如何从JSON中的Ajax响应中获取objct信息,javascript,jquery,json,ajax,django,Javascript,Jquery,Json,Ajax,Django,我在一个需要解析Ajax响应的站点上工作,该响应如下所示: {"comments": "[{\"model\": \"modelhandler.comment\", \"pk\": 4, \"fields\": {\"user\": 2, \"description\": \"hello this is a comment but I don't know if it's working yet.......\", \"replyto\": null, \"uploaded\": \"2018-

我在一个需要解析Ajax响应的站点上工作,该响应如下所示:

{"comments": "[{\"model\": \"modelhandler.comment\", \"pk\": 4, \"fields\": {\"user\": 2, \"description\": \"hello this is a comment but I don't know if it's working yet.......\", \"replyto\": null, \"uploaded\": \"2018-01-10T20:35:40.856Z\", \"updated\": \"2018-01-10T20:35:40.856Z\"}}]"}
def obtain_comments(request, *args, **kwargs):
    begin = int(request.GET['begin'])
    end = int(request.GET['end'])
    n_comments = end - begin
    all_split = Comment.objects.order_by('-uploaded')[:end]
    data = {
        'comments': serializers.serialize('json',all_split),
    }
    return JsonResponse(data)
我尝试从以下响应中获取数据:

success: function (data) {
    var json = JSON.parse(JSON.stringify(data));
    $.each(json, function(key,value) {
        alert(value.comments);
    });
}
然而,这提醒我未定义

这里的comments字段中有1条注释,但我可能有多条注释。我如何从这样的Json响应中检索数据

编辑:

我记录了数据对象,得到了以下结果:

Object
comments
:
"[{"model": "modelhandler.comment", "pk": 4, "fields": {"user": 2, "description": "hello this is a comment but I din't know if it's working yet.......", "replyto": null, "uploaded": "2018-01-10T20:35:40.856Z", "updated": "2018-01-10T20:35:40.856Z"}}]"
__proto__
:
Object
在Google Chrome中使用console.log

json也是由django视图生成的,如下所示:

{"comments": "[{\"model\": \"modelhandler.comment\", \"pk\": 4, \"fields\": {\"user\": 2, \"description\": \"hello this is a comment but I don't know if it's working yet.......\", \"replyto\": null, \"uploaded\": \"2018-01-10T20:35:40.856Z\", \"updated\": \"2018-01-10T20:35:40.856Z\"}}]"}
def obtain_comments(request, *args, **kwargs):
    begin = int(request.GET['begin'])
    end = int(request.GET['end'])
    n_comments = end - begin
    all_split = Comment.objects.order_by('-uploaded')[:end]
    data = {
        'comments': serializers.serialize('json',all_split),
    }
    return JsonResponse(data)

看起来您的响应是一个对象,并且值是字符串化的

试一试


最好是在Django中序列化整个数据对象,而不仅仅是注释。

看起来您的响应是一个对象,并且值是字符串化的

试一试


最好是在Django中序列化整个数据对象,而不仅仅是注释。

我不明白这一点:JSON.parseJSON.stringify。。。。为什么字符串化只是为了立即解析;用于将已解析的JSON转换为字符串。您只需要JSON.parsedata现在,我删除了JSON数据的第1行第2列的stringefy:SyntaxError:JSON.parse:unexpected字符。OOPS没有注意到django标记@LouysPatriceBessette@MuhammadOmerAslam:当然可以。。我只是加了一句;我不明白这个:JSON.parseJSON.stringify。。。。为什么字符串化只是为了立即解析;用于将已解析的JSON转换为字符串。您只需要JSON.parsedata现在,我删除了JSON数据的第1行第2列的stringefy:SyntaxError:JSON.parse:unexpected字符。OOPS没有注意到django标记@LouysPatriceBessette@MuhammadOmerAslam:当然可以。。我只是加了一句;这里的方法似乎可行,但我现在有了每个数组元素,比如对象{model:modelhandler.comment,pk:4,fields:Object}。我该如何访问其中一个字段呢?NVM找到了它:'console.logjson[0].fields.description'Try console.logcomments[0].model;。。。它应该打印modelhandler.comment您现在有了一个对象数组。这里的方法似乎可行,但我现在有了每个数组元素,比如Object{model:modelhandler.comment,pk:4,fields:Object}。我该如何访问它的一个字段呢?NVM找到了它:'console.logjson[0].fields.description'Try console.logcomments[0].model;。。。它应该打印modelhandler.comment您现在有了一个对象数组。