为什么要使用JSON.parse(JSON.stringify(json))!= json?

时间:2018-12-08 15:51:02

标签: json parsing react-native stringify asyncstorage

我在互联网上搜索了一个答案,结果发现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版本(这是可用的stringifyparse之前的版本):

Object {
   "content": Array [
     Object {
       "class": "with one",
       "desc": "is",
       "explanation": "just a",
       "id": "0",
       "image": "item",
       "l_name": "testing",
       "name": "this",
       "time": "test",
     },
   ],
 }

获取的jsonContent版本(stringifyparse之后是无效的):

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))

如果您需要更多信息,请询问。 谢谢您的宝贵时间。

2 个答案:

答案 0 :(得分:0)

那是因为javascript中的对象和数组是使用那里的引用来评估的。当您执行JSON.parse(JSON.stringify(responseJson))时,将使用新引用创建一个新数组。当JavaScript Engine尝试使用该引用评估对象时,他遇到了不同的引用,这就是它返回false的原因。

如果要检查两个对象,则必须使用循环遍历对象的每个值。

答案 1 :(得分:-2)

我会根据您的问题答复。 JSON.stringify转换为json。然后,Json.parse给出一个数组。因此,该数组不等于您的json