2017-11-23 16 views
0

은 아주 간단 같은데하지만 난 그래서 유효한 JSON으로 (제 3 자 웹 사이트에서 제공) 문자열 위 변환 할 수 없습니다입니다구문 분석 JSON 문자열은 슬래시 - 자바 스크립트

var str="[{name:\"House\",id:\"1\"},{name:\"House and Land\",id:\"5\"},{name:\"Land\",id:\"6\"},{name:\"Terrace\",id:\"11\"}]"; 
JSON.parse(str.replace(/\s/g, "").replace(/\//g, '')); 

을 알아낼 수 없습니다입니다 나는

VM5304:1 Uncaught SyntaxError: Unexpected token n in JSON at position 2 
    at JSON.parse (<anonymous>) 
+1

당신은 소스 문자열은 반드시 유효하지 않은 것입니까? JSON으로 인코딩 된 값이 다른 JSON으로 인코딩 된 값에 포함 된 결과입니다. – Marty

+1

JSON에서 색인 또는 키를 따옴표로 묶어야합니다. –

+0

유효한 JSON은 아니지만'console.log (eval (str)) '에 대해서는 OK입니다. – Slai

답변

2

JSON 인용 할 수있는 키를 필요로

오류 내 옆에 그것을 반복 할 수 있습니다. 귀하의 키가 인용되지 않은 것으로 보입니다. 그래서 다시 따옴표를 삽입하는 또 다른 .replace 문을 추가 :

.replace(/(\w+):/g, '"$1":'); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON

속성 이름을 반드시 이중 인용 문자열이 될; 후행 쉼표는 금지됩니다.

완벽한 솔루션 :

.replace(/(,|{)\s*(\w+)\s*:/g, '$1"$2":'); 
+1

네, 대단히 감사합니다. – sumit