JSON对象没有完全转换为String?

时间:2015-11-12 13:33:36

标签: javascript json stringify

我遇到的问题是JSON.stringify没有对JSON对象中的所有键进行字符串化。

即。 window.performance.getEntries()[0]包含大约17个密钥。但是在转换为字符串时,结果只包含4个键。

如何转换window.performance.getEntries()[0]中的所有密钥?

我想要window.performance.getEntries()的完整字符串输出,这是一个数组,我使用了JSON.stringify(window.performance.getEntries())

提前致谢..

3 个答案:

答案 0 :(得分:1)

window.performance似乎有自己的toJSON - 函数,因此可以确定将被字符串化的内容。以下是一个问题的答案和解决方法:https://stackoverflow.com/a/20511811/3400898

  

"如果stringify方法看到包含toJSON方法的对象,它会调用该方法,并将返回的值字符串化。这允许对象确定自己的JSON表示。"

答案 1 :(得分:0)

正如其他人所说,这是因为定义了toJSON方法。基本上,您需要遍历数组的每个索引以及对象中的每个属性。

var adjusted = window.performance.getEntries().map( function (result) {       
    var temp = {}, key;
    for (key in result) if (key!=="toJSON") temp[key]=result[key]; 
    return temp;
});
console.log(JSON.stringify(adjusted[0]));

答案 2 :(得分:0)

我发现这个问题的简化解决方案是

var jsonArray = $.map(performance.getEntries(),function(jsonObj){
    var obj = $.extend({},jsonObj);
    delete obj.toJSON;
    return obj;
});

JSON.stringify(jsonArray);