나는 끈이있다
str = "{'a':1}";
JSON.parse(str);
VM514:1 Uncaught SyntaxError: Unexpected token '(…)
위의 문자열 (str)을 JSON 객체로 어떻게 구문 분석 할 수 있습니까?
이것은 단순한 구문 분석처럼 보입니다. 그래도 작동하지 않습니다.
나는 끈이있다
str = "{'a':1}";
JSON.parse(str);
VM514:1 Uncaught SyntaxError: Unexpected token '(…)
위의 문자열 (str)을 JSON 객체로 어떻게 구문 분석 할 수 있습니까?
이것은 단순한 구문 분석처럼 보입니다. 그래도 작동하지 않습니다.
var str = "bad example";좋은 습관이 아니라면 다음을 수행하는 것이 좋습니다. var str = 'good example';=> 이렇게하면 JSON에 문제가없고 HTML에도 문제가 없습니다. :)
답변:
JSON 표준은 큰 따옴표를 필요로하며, 작은 따옴표를 허용하지 않습니다 않으며 파서는 것이다.
문자열에 이스케이프 된 작은 따옴표가없는 간단한 케이스가있는 경우 (일반적으로 불가능하지만 JSON이 아님) 간단 할 수 str.replace(/'/g, '"')있으며 유효한 JSON으로 끝나야합니다.
'title': "Mama's Friend"될 것입니다 "title": "Mama"s Friend"물론 무효의 인! 나는 귀하의 답변에 대해 반대 투표를해야하지만 반대 투표에 반대합니다. 이 의견은 훨씬 더 가치가 있습니다.
나는 그것이 오래된 게시물이라는 것을 알고 있지만 이 목적으로 JSON5 를 사용할 수 있습니다 .
<script src="json5.js"></script>
<script>JSON.stringify(JSON5.parse('{a:1}'))</script>
{'section': "24'"} 된다 : {"section": "24""} 및 구문 분석하지 않습니다.
<script>JSON.stringify(some_jsonString)</script>
사용자 입력이 아닌 JSON이 안전하게 제어되고 있다고 확신하는 경우 간단히 JSON을 평가할 수 있습니다. Eval은 모든 인용 유형과 인용되지 않은 속성 이름을 허용합니다.
var str = "{'a':1}";
var myObject = (0, eval)('(' + str + ')');
eval 파서가 작동하는 방식으로 인해 추가 괄호가 필요합니다. Eval은 사용자가 제어 할 수있는 데이터에 사용될 때 악의가 없습니다. () JSON.parse 및 평가의 차이에 대한 자세한 내용은 참조 ) (JSON.parse 비교 평가
var str = "{'a':1}";
str = str.replace(/'/g, '"')
obj = JSON.parse(str);
console.log(obj);
이것은 나를 위해 문제를 해결했습니다.
{'a':"A'A"}될 것입니다{"a":"A"A"}
json = ( new Function("return " + jsonString) )();
Functioneval 대신 사용 하는 원칙 은 건전하지만 다른 모든 것은 잘못되었습니다. 그것은해야한다var json = Function("'use strict';return " + jsonString)()