JSON 对象未完全转换为字符串?

Posted

技术标签:

【中文标题】JSON 对象未完全转换为字符串?【英文标题】:JSON Object not fully converts to String? 【发布时间】:2016-02-13 20:21:48 【问题描述】:

我面临一个问题,即 JSON.stringify 没有对 JSON 对象中的所有键进行字符串化。

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

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

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

提前谢谢..

【问题讨论】:

window.performance.getEntries()[0] 的示例 抱歉,没有示例或截图,我们无法为您提供帮助... 为我工作JSON.parse(JSON.stringify(window.performance.getEntries())).length == window.performance.getEntries().length == true 你检查过解析停止的条目吗? @AlexK。 — window.performance.getEntries() != window.performance.getEntries()[0] 问题是询问返回的数组中对象的属性,而不是数组本身的条目。 是的,但是 我想要 window.performance.getEntries() 的完整字符串输出 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

正如其他所说,这是因为定义了一个 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]));

【讨论】:

【参考方案3】:

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

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

JSON.stringify(jsonArray);

【讨论】:

以上是关于JSON 对象未完全转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

请问JSON格式为啥要转换成JavaBean对象去刷新界面,而不能直接用JSON去刷新界面

js 的一点用法

完全理解Gson:Gson序列化

js 将json字符串转换为json对象或json对象转换成json字符串

json字符串转换成对象,对象为空,如何解决

jQuery怎么把JSON格式的字符串转换为JSON对象