我遇到的问题是JSON.stringify没有对JSON对象中的所有键进行字符串化。
即。 window.performance.getEntries()[0]
包含大约17个密钥。但是在转换为字符串时,结果只包含4个键。
如何转换window.performance.getEntries()[0]
中的所有密钥?
我想要window.performance.getEntries()
的完整字符串输出,这是一个数组,我使用了JSON.stringify(window.performance.getEntries())
。
提前致谢..
答案 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);