Почему JSON.parse (JSON.stringify (json))! = Json? - PullRequest
0 голосов
/ 08 декабря 2018

Я искал в Интернете ответ и обнаружил, что 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))

Если вам нужна дополнительная информация, просто спросите.Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Это потому, что объекты и массивы в javascript оцениваются с использованием там ссылок.Когда вы делаете JSON.parse (JSON.stringify (responseJson)), создается новый массив с новой ссылкой.И когда JavaScript Engine пытается оценить объект с помощью этой ссылки, он встречает разные ссылки, и поэтому он возвращает false.

Если вы хотите проверить два объекта, то вам придется перебирать каждое значение объекта с помощью циклов.

0 голосов
/ 08 декабря 2018

Я просто отвечу по вашему вопросу.JSON.stringify преобразует в JSON.Затем Json.parse дает массив.Таким образом, этот массив не равен вашему JSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...