programing

json_encode가 백슬래시를 추가하는 이유는 무엇입니까?

goodsources 2023. 2. 25. 20:55
반응형

json_encode가 백슬래시를 추가하는 이유는 무엇입니까?

쓰고 있어요.json_encode업로드 후현재 업로드 스크립트를 사용하고 있으며 파일 업로드 후 JSON 데이터를 반환하려고 합니다.

다음 코드가 있습니다.

print_r($result); // <-- This is an associative array
echo json_encode($result); // <-- this returns valid JSON

이를 통해 다음과 같은 결과를 얻을 수 있습니다.

// print_r result
Array
(
    [logo_url] => http://mysite.com/uploads/gallery/7f/3b/f65ab8165d_logo.jpeg
    [img_id] => 54
    [feedback] => Array
        (
            [message] => File uploaded
            [success] => 1
        )

)

// Echo result
{"logo_url":"http:\/\/mysite.com\/uploads\/gallery\/7f\/3b\/f65ab8165d_logo.jpeg","img_id":"54","feedback":{"message":"File uploaded","success":true}}

그런지 줄 사람 있어요?json_encode래시시? 츠요시

갱신하다

@Quentin은 그 사이에 뭔가 일어나고 있다고 말했다.json_encode ★★★★★★★★★★★★★★★★★」.parseJSON리고그그 맞맞맞맞맞

을다하 alert(data.toSource());: dollowing 결 、 dollowing 。

({response:"{\"logo_url\":\"http:\\/\\/storelocator.com\\/wp-content\\/uploads\\/gallery\\/7f\\/3b\\/71b9520cfc91a90afbdbbfc9d2b2239b_logo.jpeg\",\"img_id\":\"62\",\"feedback\":{\"message\":\"File uploaded\",\"success\":true}}", status:200})

JSON을 사용하다, 「」도 되어 있습니다.status:200이게 어디서 온 건지 전혀 모르겠어요

...Plupload bind환된데데데 이가?? ?????

다음은 js 스크립트입니다.

  uploader.bind('FileUploaded', function(up, file, data) {
    alert(data.toSource());
    $('#' + file.id + " b").html("100%");
  });

버전 5.4 이후에 추가된 "JSON_UNESCAPED_SLASS" 옵션만 사용하십시오.

json_encode($array,JSON_UNESCAPED_SLASHES);

이 문제는 스크립트 중 일부에서도 발견되었는데, 다른 어레이에 json_encode를 적용했기 때문에 발생한 것 같습니다.이것도 json으로 인코딩된 어레이입니다.데이터를 작성하는 스크립트에 여러 개의 foreach 루프가 있는 경우 쉽게 실행할 수 있습니다.항상 마지막에 json_encode를 적용합니다.

무슨 일이 있었는지 말해줄게.필요한 경우:

$data[] = json_encode(['test' => 'one', 'test' => '2']);
$data[] = json_encode(['test' => 'two', 'test' => 'four']);
echo json_encode($data);

결과는 다음과 같습니다.

["{\"test\":\"2\"}","{\"test\":\"four\"}"]

따라서 실제로 해야 할 일은 다음과 같습니다.

$data[] = ['test' => 'one', 'test' => '2'];
$data[] = ['test' => 'two', 'test' => 'four'];
echo json_encode($data);

그리고 이것은 돌아올 것이다.

[{"test":"2"},{"test":"four"}]

왜 json_encode가 슬래시를 추가하는지 알 수 있나요?

슬래시 할 수 에 '''가 붙을 ).<HTML 스크립트 요소에 포함된 경우 스크립트 요소의 끝)에 대한 SGML 규칙을 트리거합니다.그들은 예방책으로 탈출한다.

jQuery.parseJ를 사용하려고 하면SON(응답); js 스크립트에서 null을 반환합니다.내 생각엔 그 상처와 관련이 있는 것 같아.

그렇지 않아요. JSON j JSON"/" ★★★★★★★★★★★★★★★★★」"\/"등합니니다다

질문에 기재된 JSON은 유효합니다(jsonlint를 사용하여 테스트할 수 있습니다).당신의 문제는 그 사이에 일어나는 일과 관련이 있을 수 있습니다.json_encode ★★★★★★★★★★★★★★★★★」parseJSON.

이 문제는 JSON 형식에서 "("quotes")를 사용하고 이러한 따옴표 사이에 있는 모든 것이 유용한 정보(키 또는 데이터)이기 때문에 발생합니다.

다음과 가정해보세요.He said "This is how it is done". 실제 는 이렇게 요."He said \"This is how it is done\"."

하면 이 this this, 음음 this this \""(Quotation mark)JSON 포맷이 아닙니다.을 '어느덧 하다'라고 .escape character.

이것은 보통 이미 JSON 인코딩된 데이터를 부호화하려고 할 때 발생합니다.이것은 일반적인 방법입니다.

이거 드셔보세요

$arr = ['This is a sample','This is also a "sample"']; echo json_encode($arr);

출력:

["This is a sample","This is also a \"sample\""]

php 스크립트에 올바른 헤더가 있는지 확인하십시오.그렇지 않으면 슬래시 헤더('Content-Type: application/json')가 추가됩니다.

저도 비슷한 문제가 있어서 게시할 준비가 되어 있었습니다.포스트 기능에는 다음과 같은 내용이 있습니다.

json = JSON.stringfy(json);

세부사항은 3개의 뷰 폼을 작성하기 위해 larabel 내부에 블레이드를 사용하고 있기 때문에 앞뒤로 이동할 수 있습니다.또한 백슬래시에 의해 채워진 페이지를 새로고침하지 않고 폼으로 돌아갈 수 있습니다.iconsole.log(json)모든 검증에서 json이 객체가 아닌 문자열로 취급된다는 것을 깨달았습니다.

결론부터 말하면, 난 나쁜 짓을 하지 말았어야 했다.json = JSON.stringfy(json)대신 다른 변수에 할당했습니다.

var aux = JSON.stringfy(json);

이렇게 하면 json을 문자열이 아닌 객체로 유지할 수 있습니다.

json_encode는 항상 슬래시를 추가합니다.

매뉴얼에서 몇 가지 예를 확인하십시오.

이는 이스케이프할 필요가 있는 문자가 있는 경우 문제가 발생하기 때문입니다.

json을 사용하려면 json을 해석하여 슬래시가 제거되었는지 확인하십시오.

slashest 제거 여부는 평가 결과 문제없이 해석될 것입니다.

<?php
$array = array('url'=>'http://mysite.com/uploads/gallery/7f/3b/f65ab8165d_logo.jpeg','id'=>54);
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
var x = jQuery.parseJSON('<?php echo json_encode($array);?>');
alert(x);
</script>

이것은 제 코드이며 JSON을 해석할 수 있습니다.

코드를 확인합니다.JSON을 해석하는 동안 뭔가 누락되었을 수 있습니다.

언급URL : https://stackoverflow.com/questions/10314715/why-is-json-encode-adding-backslashes

반응형