嵌套对象上的JSON.stringify忽略嵌套对象

时间:2014-03-27 13:57:19

标签: javascript json object stringify

当您使用Chrome检查时,我会生成一个看起来像这样的物体:

object in Chrome inspector

当我尝试使用JSON.stringify对此对象进行字符串化时,我得到以下结果:

{
    "results" : [{
            "ID" : 1,
            "NAME" : "Admin"
        }, {
            "ID" : 2,
            "NAME" : "Standarduser"
        }, {
            "ID" : 3,
            "NAME" : "Consultant"
        }, {
            "ID" : 4,
            "NAME" : "Leergruppe"
        }
    ]
}

由于某种原因,缺少所有嵌套节点。 我确信这是非常简单和随意的,但目前我根本无法找到我的错误。 非常感谢你的帮助!

编辑:JSFiddle如何创建JSON:http://jsfiddle.net/VJTaV/

2 个答案:

答案 0 :(得分:4)

由于您的jsfiddle显示ajax调用,因此您可能已调用JSON.stringify() before the ajax results are available。你需要将它放在成功回调中,以便在ajax完成后执行。

Chrome检查器会将属性显示为您在记录对象后对其进行修改,以后您可以展开并查看console.log调用时尚未存在的新属性。< / p>

答案 1 :(得分:1)

如Bergi所述,您正在尝试对尚未加载的数据进行字符串化,因为$ .get调用是异步的。您可以将.done回调附加到每个回调,或者,如果您只想在所有请求完成时执行代码,请使用jQuery.when

var jqXHRs = [];

$( data.results ).each(function( key, val ) {
  var jqXHR = $.get( userDataUrl, "", function( res ) {
    // ...
  });

  jqXHRs.push(jqXHR);
});

$.when.apply( $, jqXHRs ).done(function() {
    console.log( val ); // will log all nested nodes
});