프로그래밍 언어/JAVA

Try / Catch를 사용하지 않고 JavaScript에서 문자열이 유효한 JSON 문자열인지 확인하는 방법

Rateye 2021. 11. 26. 10:23
728x90
반응형
질문 : Try / Catch를 사용하지 않고 JavaScript에서 문자열이 유효한 JSON 문자열인지 확인하는 방법

다음과 같은 것 :

var jsonString = '{ "Id": 1, "Name": "Coke" }';

//should be true
IsJsonString(jsonString);

//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")

솔루션에는 try / catch가 포함되지 않아야합니다. 우리 중 일부는 "모든 오류 중단"을 설정하고 잘못된 JSON 문자열을 중단하는 디버거를 좋아하지 않습니다.

답변

먼저 코멘트. try/catch 사용하지 않는 것에 관한 것이 었습니다.
그것을 사용해도 괜찮다면 아래 답변을 읽으십시오. JSON 문자열을 확인하기 만하면 모든 경우가 아닌 대부분의 경우에서 작동합니다.

https://github.com/douglascrockford/JSON-js/blob/master/json2.js 에서 450 번 라인을 살펴보세요.

다음과 같이 유효한 JSON을 확인하는 정규 표현식이 있습니다.

if (/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

  //the json is ok

}else{

  //the json is not ok

}

편집 : json2.js의 새 버전은 위보다 더 고급 구문 분석을 수행하지만 여전히 정규 표현식 교체를 기반으로합니다 ( @Mrchief의 주석에서 )

출처 : https://stackoverflow.com/questions/3710204/how-to-check-if-a-string-is-a-valid-json-string-in-javascript-without-using-try
728x90
반응형