code

이스케이프된 JSON 문자열을 수정하는 방법(JavaScript)

starcafe 2023. 3. 19. 18:23
반응형

이스케이프된 JSON 문자열을 수정하는 방법(JavaScript)

리모트 서버(관리 불능)는, 모든 필드명과 값이 이스케이프 된 JSON 문자열을 송신합니다.예를 들어 JSON.stringify(res)를 실행하면 다음과 같은 결과가 나타납니다.

"{\"orderId\":\"123\"}"

alert(res.orderId)를 실행하면 정의되지 않음으로 표시됩니다.탈출한 's'들 때문인 것 같아요이거 어떻게 고쳐야 돼요?

그것이 실제 표시된 값이라고 가정하고 다음 사항을 고려합니다.

twice_json = '"{\\"orderId\\":\\"123\\"}"'  // (ingore the extra slashes)
json = JSON.parse(twice_json)               // => '{"orderId":"123"}'
obj = JSON.parse(json)                      // => {orderId: "123"}
obj.orderId                                 // => "123"

JSON.stringify를 에 적용하는 방법에 주의해 주세요.json값(JSON이 텍스트인 것처럼 문자열)에 따라twice_json가치. 그 사이의 관계를 더 고려하라.obj(JavaScript 객체) 및json(JSON 문자열).

즉, 게시물에 표시된 결과가 다음과 같은 출력일 경우JSON.stringify(res)res는 이미 JavaScript 객체가 아닌 JSON(텍스트/문자열)이므로 이미 JSON 값으로 stringify를 호출하지 마십시오.대신, 사용obj = JSON.parse(res); obj.orderId위의 데모/시위에 따라 주십시오.

받아들여진 답변은 나에게 효과가 없다.사용하고 있다

json = json.replace(/\\/g,"");
let arrayObj = JSON.parse(json);

실제로는 JSON.stringufy를 실행하는 오브젝트입니다.

var jsonString = "{\"orderId\":\"123\"}";
var jsonObject = JSON.parse(jsonString);

console.log(jsonObject.orderId);

아니면 그것보다 더 단순하게

var jsonObject = JSON.parse("{\"orderId\":\"123\"}");
console.log(jsonObject.orderId);

JSON.parse를 사용하셔도 됩니다.저는 API가 어떤 것을 반환하는지 잘 모르기 때문에 대안을 드릴 수 없습니다.

var res = "{\"orderId\":\"123\"}";
res = JSON.parse(res);
alert(res.orderId);

json.orderId를 사용할 수 없는 데이터를 문자열화해야 합니까? json 문자열을 전송해야 합니까? json이 이미 문자열에 있는 경우 문자열화를 수행할 필요가 없습니다.크롬 디버거 또는 다른 브라우저 디버거가 있는 경우 var의 유형을 볼 수 있습니다.

언급URL : https://stackoverflow.com/questions/25721164/how-to-fix-an-escaped-json-string-javascript

반응형