programing

어떻게 하면 php의 JSON 응답 내의 문자열 안에 큰따옴표를 넣을 수 있을까요?

starjava 2023. 3. 3. 16:46
반응형

어떻게 하면 php의 JSON 응답 내의 문자열 안에 큰따옴표를 넣을 수 있을까요?

서버로부터 Ajax 요청으로 JSON 응답을 받았습니다.다음과 같이 동작합니다.

{ "a" : "1", "b" : "hello" "filename" }

하지만 나는 키티 주위에 이중 따옴표를 넣는 데 성공하지 못했다.

Ajax 응답에서 "를 \x22로 변환해도 JavaScript에 의해 "로 해석되어 JSON을 해석할 수 없습니다.

또한 \를 탈출하고 나중에 unescape를 해야 합니까(가능합니다.

이거 어떻게 하는 거야?

편집: 잘 표현했는지 모르겠습니다.해석 후에 이 문자열을 "b" 안에 넣어야 합니다.

헬로 "hello" "hello"

필요에 따라 해석 후에 스텝을 추가하여 "b"를 변환할 수도 있습니다만, 그럴 필요는 없다고 생각합니다만, 이것이 자동적으로 이루어지도록 보다 우아한 방법이 있을까요?

Edit2: ajax 페이지는 php에 의해 생성됩니다.b의 값을 작성하기 위해 몇 가지 작업을 시도했지만 모두 페이지에 JSON 해석 오류가 발생했습니다.

  $b = 'hello "kitty"';      

  // no 1:
  //$b = str_replace('"',"\x22",$b);

  // or no 2:
  // $b = addslashes($b);  

  // or no 3: 
  $b = str_replace('"','\"',$b);

  echo '{ "a" : "1", "b" : "' . $b . '"}';

편집 3: 이 솔루션은 드디어 기능합니다.

$b = 'hello "kitty"';      
$b = str_replace('"','\\"',$b); 
echo '{ "a" : "1", "b" : "' . $b . '"}';

백슬래시로 탈출하세요.

> JSON.stringify({"a": 5, "b": 'a "kitty" mighty odd'})
{"a":5,"b":"a \"kitty\" mighty odd"}
> JSON.parse('{"a":5,"b":"a \\"kitty\\" mighty odd"}')
Object
  a: 5
  b: a "kitty" mighty odd
  __proto__: Object

JSON 파서는 인식합니다.\"이중 따옴표로 묶은 문자열 안쪽을 지정합니다.두 번째 예에서는 Javascript 파서 패스가 있고 그 다음에 다른 JSON 파서 패스가 있기 때문에 이중 백슬래시가 필요합니다.

json_encode(PHP 요소)만 사용하면 자동으로 해석됩니다.

조금 다른 토픽으로, 서버상에서 JavaScript/NodeJs 를 사용하고, ES6 템플릿 리터럴("Christian" 주변에서 사용되는 "백트릭")을 사용할 수 있지만, 7년 후에는 이미 NodeJS 를 사용하고 있을 것입니다.

var myJSON = {
    "name": {
        "first": `"Christian"`,
        "last": "Broberg"
    },
    "age": 49,
    "skills": [ "JavaScript", "React", "NodeJS" ],
    "married": false,
    "superpowers": null
}

언급URL : https://stackoverflow.com/questions/2732409/how-can-i-put-double-quotes-inside-a-string-within-an-ajax-json-response-from-ph

반응형