我在互联网上搜索了一个答案,结果发现JSON.stringify()
不能转换例如函数,只能转换纯数据。
但是这个答案不能满足我的需求。
由于json
的工作原理,我需要将通过fetch
请求的AsyncStorage
保存在字符串中
因此,我将jsonContent
并保存为一个字符串化的版本(jsonContent
是获取的json
)
var temp = JSON.stringify(jsonContent);
然后,我需要重新调用它,以便将其恢复为json
格式,但是它不接受该输出作为json
输出。
var output = JSON.parse(temp);
我想获取的json
是:
{
"content": [{
"name": "this",
"desc": "is",
"explanation": "just a",
"time": "test",
"class": "with one",
"image": "item",
"id": "0",
"l_name": "testing"
}]
}
获取的jsonContent
版本(这是可用的stringify
和parse
之前的版本):
Object {
"content": Array [
Object {
"class": "with one",
"desc": "is",
"explanation": "just a",
"id": "0",
"image": "item",
"l_name": "testing",
"name": "this",
"time": "test",
},
],
}
获取的jsonContent
版本(stringify
&parse
之后是无效的):
Object {
"content": Array [
Object {
"class": "with one",
"desc": "is",
"explanation": "just a",
"id": "0",
"image": "item",
"l_name": "testing",
"name": "this",
"time": "test",
},
],
}
如何修复json,以便可以使用JSON.stringify(JSON.parse(jsonContent))
如果您需要更多信息,请询问。 谢谢您的宝贵时间。
答案 0 :(得分:0)
那是因为javascript中的对象和数组是使用那里的引用来评估的。当您执行JSON.parse(JSON.stringify(responseJson))时,将使用新引用创建一个新数组。当JavaScript Engine尝试使用该引用评估对象时,他遇到了不同的引用,这就是它返回false的原因。
如果要检查两个对象,则必须使用循环遍历对象的每个值。
答案 1 :(得分:-2)
我会根据您的问题答复。 JSON.stringify转换为json。然后,Json.parse给出一个数组。因此,该数组不等于您的json