programing

JSON.stringify 및 json_decode()를 올바르게 사용하는 방법

magicmemo 2023. 4. 1. 09:01
반응형

JSON.stringify 및 json_decode()를 올바르게 사용하는 방법

다음 방법으로 다차원 Javascript 배열을 내 사이트의 다른 페이지로 전달하려고 합니다.

  • 어레이에서 JSON.stringify 사용

  • 입력 필드에 결과 값 할당

  • 두 번째 페이지에 해당 필드 게시

  • 게시된 값에 json_module 사용

  • 그런 다음 var_test를 실행합니다.

  • (투고된 변수가 전달되었는지 확인하기 위해 직접 확인)

Javascript (1페이지):

var JSONstr = JSON.stringify(fullInfoArray);
document.getElementById('JSONfullInfoArray').value= JSONstr;

php (2페이지):

$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);

echo($_POST["JSONfullInfoArray"]);

에코가 정상적으로 동작하지만 var_dump는 NULL을 반환한다.

제가 무엇을 잘못했지요?


이것으로 해결했습니다.

$postedData = $_POST["JSONfullInfoArray"];
$tempData = str_replace("\\", "",$postedData);
$cleanData = json_decode($tempData);
var_dump($cleanData);

이유는 알 수 없지만 게시물은 문자열 내의 각 변수를 구분하는 여러 개의 "\" 문자로 구성되어 있습니다.

를 사용하여 알아냈다.json_last_error()돌아온 바트의 제안대로JSON_ERROR_SYNTAX

JSON.stringify()를 사용하여 데이터를 저장한 후 php로 읽을 필요가 있는 경우.다음 코드가 나에게 효과가 있었다.

json_decode( html_entity_decode( stripslashes ($jsonString ) ) );

@Thisguyhastwothumbs 덕분에

JSON stringify를 사용하는 경우 json_decode보다 먼저 html_entity_decode를 사용합니다.

$tempData = html_entity_decode($tempData);
$cleanData = json_decode($tempData);

의 내용을 확인해야 합니다.$_POST["JSONfullInfoArray"]해석에 문제가 있는 경우json_decode그냥 돌아온다null이건 별로 도움이 안 되니까null반환되었습니다.확인해 주세요.json_last_error()무엇이 잘못되었는지에 대한 자세한 정보를 얻을 수 있습니다.

제 경우 다른 답변은 모두 작동하지 않았습니다.아마 JSON 배열에 특수 문자가 포함되어 있을 것입니다.무엇이 문제였습니까?

Javascript(부호화 추가)URIC 컴포넌트)

var JSONstr = encodeURIComponent(JSON.stringify(fullInfoArray));
document.getElementById('JSONfullInfoArray').value = JSONstr;

PHP(질문에서 변경되지 않음)

$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);

echo($_POST["JSONfullInfoArray"]);

URL 필드와 긴 텍스트필드를 포함하여 문자가 포함된 서브셋에 대해 var_dump에서 NULL을 반환하고 있는 2000개가 넘는 사용자 입력 데이터셋에서 에코와 var_dump가 모두 정상적으로 동작하는 것이 확인되었습니다.?&#.

stripslashes(htmlspecialchars(JSON_DATA))
jsonText = $_REQUEST['myJSON'];

$decodedText = html_entity_decode($jsonText);

$myArray = json_decode($decodedText, true);`

이게 어떻게 돌아가는지는 모르겠지만, 작동했어요.

$post_data = json_decode(json_encode($_POST['request_key']));

언급URL : https://stackoverflow.com/questions/15986235/how-to-use-json-stringify-and-json-decode-properly

반응형