const val1 = "{a: '123'}";
console.log(typeof(val1)); // string
const a = JSON.parse(val1); // Gives Error:
Это происходит потому, что val1
здесь не является допустимой строкой json, так как свойство a
и его значение внутри объекта не заключено в двойные кавычки. После этого вы можете видеть, что он работает нормально:
const val1 = '{"a": "123"}';
console.log(typeof(val1)); // string
const a = JSON.parse(val1); // It works!
console.log( a )
const b = JSON.parse(JSON.stringify(val1));
console.log(b); // {a: '123'}
console.log(b.a); // ---> undefined
b.a
здесь undefined
, потому что b
на самом деле здесь не объект, а строка:
const val1 = "{a: '123'}";
const b = JSON.parse(JSON.stringify(val1));
console.log(b); // {a: '123'}
console.log(typeof b); // string
console.log(b.a); // ---> undefined
Это происходит потому, что
JSON.stringify(val1)
преобразует "{a: '123'}"
в ""{a: '123'}""
. Он просто добавляет двойные кавычки вокруг val1
, поскольку это уже была строка.
, и с помощью JSON.parse
он просто удалил из нее двойные кавычки, и мы снова получили строку.
const val1 = "{a: '123'}";
const val2 = JSON.stringify(val1);
console.log( val2 ) // "{a: '123'}" ... its actually ""{a: '123'}""
console.log( typeof val2 ) // string
const val3 = JSON.parse(val2);
console.log( val3 ) // {a: '123'} ... its actually "{a: '123'}"
console.log( typeof val3 ) // string