JSON解析后无法获得价值

时间:2020-04-10 05:50:34

标签: javascript json string jsonparser

从下面的字符串转换值时遇到问题。试图解析JSON但没有用。

const val1 = "{a: '123'}";

console.log(typeof(val1)); // string

const a = JSON.parse(val1); // Gives Error: Unexpected token a in JSON at position 1

const b = JSON.parse(JSON.stringify(val1)); 
console.log(b); // {a: '123'}
console.log(b.a); // ---> undefined

console.log(typeof(b)); // string -> How?

如果我再这样做,JSON.parse(b) -> Gives error: Unexpected token a in JSON at position.

有人可以建议我做错了吗

4 个答案:

答案 0 :(得分:2)

尝试以下

const jsonString = '{"a": "123"}';
const parsedJson = JSON.parse(jsonString);

console.log(parsedJson.a)

问题是您的json字符串中的单引号,请参见此https://www.json.org/json-en.html

您可以使用以下

const jsonString1 = '{"a": "123"}';
const jsonString2 = "{\"a\": \"123\"}";

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我认为问题出在您的第4行

const b = JSON.parse(JSON.stringify(val1)); 

您正在尝试解析

JSON.stringify("{a: '123'}")
的结果 产生一个“字符串内的字符串”。

enter image description here

如先前的答案建议,请确保您的json格式正确。 使用https://jsonlint.com/之类的工具来检查您的json。

答案 3 :(得分:0)

更改了以下代码。请检查它是否有效。

aws_iam_resource

相关问题