>  기사  >  php教程  >  PHP에서 JSON 적용

PHP에서 JSON 적용

黄舟
黄舟원래의
2016-12-14 10:17:451164검색

오늘날 인터넷에서 AJAX는 더 이상 낯선 단어가 아닙니다. AJAX라고 하면 RSS로 인해 등장한 XML이 바로 떠오를 수도 있다. XML 구문 분석은 아마도 더 이상 문제가 되지 않을 것입니다. 특히 PHP5와 가장 가벼운 SimpleXML과 같은 다수의 XML 구문 분석기의 등장에서는 더욱 그렇습니다. 그러나 AJAX의 경우 XML 구문 분석은 프런트 엔드 Javascript 지원에 더 가깝습니다. XML을 파싱해본 사람이라면 누구나 트리와 노드로 인해 혼란스러울 것이라고 생각합니다. XML이 매우 좋은 데이터 저장 방법이라는 것은 부인할 수 없지만 XML의 유연성으로 인해 구문 분석이 어렵습니다. 물론 여기서 언급한 어려움은 이 글의 주인공인 JSON과 관련이 있다.

JSON이란 무엇인가요? 나는 그 개념을 반복하지 않을 것이다. 일반인의 관점에서 보면 이는 PHP 직렬 문자열과 같은 데이터 저장 형식입니다. 데이터 설명입니다. 예를 들어 배열을 직렬화하여 저장하면 쉽게 역직렬화하고 적용할 수 있습니다. 클라이언트 측 Javascript와 서버 측 PHP 사이에 대화형 브리지를 구축한다는 점을 제외하면 JSON의 경우에도 마찬가지입니다. 우리는 PHP를 사용하여 JSON 문자열을 생성한 다음 이 문자열을 프런트 엔드 Javascript에 전달합니다. Javascirpt는 이를 JSON으로 쉽게 변환한 다음 적용할 수 있습니다. 간단히 말해서 실제로는 배열처럼 보입니다.

본론으로 돌아가서 JSON을 사용하는 방법입니다. PHP5.2에는 JSON에 대한 지원이 내장되어 있습니다. 물론 이 버전보다 낮은 경우에는 시중에 많은 PHP 버전 구현이 있으므로 원하는 버전을 사용하면 됩니다. 이제 우리는 주로 PHP의 JSON 내장 지원에 대해 이야기합니다. 매우 간단하고 두 가지 함수: json_encode 및 json_decode(직렬화와 매우 유사) 하나는 인코딩용이고 하나는 디코딩용입니다. 먼저 인코딩 사용법을 살펴보겠습니다.

$arr = array(
'name' => 'Chen Yixin',
'nick' => 비어 있음',
'연락처' => 배열(
'이메일' => 'qq dot com의 shengong',
'웹사이트' => 'http://www.chinaz.com ',
)
);
$json_string = json_encode($arr);
echo $json_string; UTF-8이 아닌 인코딩에서는 한자를 인코딩할 수 없으며 결과는 null이 됩니다. 따라서 gb2312를 사용하여 PHP 코드를 작성하는 경우 iconv 또는 mb를 사용하여 포함된 내용을 변환해야 합니다. 그런 다음 중국어를 UTF-8로 json_encoded하고 위의 출력 결과는 다음과 같습니다.

{"name":"u9648u6bc5u946b","nick":"u6df1u7a7a","contact":{"email": "shenkong at qq dot com ","website":"http://www.chinaz.com"}}

연재와 매우 유사하다고 말씀드렸지만 아직도 믿지 못하시네요. 인코딩 후에는 디코딩이 필요합니다. PHP는 해당 함수 json_decode를 제공합니다. json_decode가 실행된 후 작업은 다음과 같습니다.

$arr = 배열 (

'이름' => '첸 이신',

'nick' => '딥 스카이',

'연락처' => array(
'이메일' => ' shenkong at qq dot com' ,
'웹사이트' => 'http://www.chinaz.com',
)
)
$json_string = json_encode($arr);
$obj = json_decode ($json_string);
print_r($obj);
?>


객체의 속성에 액세스할 수 있나요? $obj->name은 물론 쉽게 호출할 수 있도록 배열로 변환할 수도 있습니다.

$json_string = json_encode($arr)

$obj = json_decode($json_string) );  

$arr = (array) $obj;  

print_r($arr); 배열을 직접 저장하지만, 이를 사용하기 위해 Javascript를 사용하면 그 효과가 나타납니다. 문자:


위에서 이 문자열을 변수에 직접 할당하면 자바스크립트 배열이 됩니다. (전문용어에서는 배열이라고 부르면 안 되지만, PHP의 습관상 이해를 돕기 위해 항상 배열이라고 부르겠습니다.) ). 이러한 방식으로 쉽게 arr을 탐색하거나 원하는 작업을 수행할 수 있습니다. 아직 AJAX에 대해서는 언급하지 않았죠? 예, 생각해 보세요. 서버에서 반환된 responseText가 XML 대신 JSON 문자열을 사용한다면 프런트 엔드 Javascript가 이를 처리하는 것이 매우 편리하지 않을까요? 이것이 개 피부 석고가 사용되는 방법입니다.

사실 이 글을 쓰면서 데이터 저장 형식이 다른 것 외에는 JSON과 XML이 큰 차이가 없는데, 아래에서 한 가지 언급하겠습니다. XML과는 거의 관련이 없지만 JSON의 광범위한 적용, 즉 도메인 간 데이터 호출을 설명할 수 있습니다. 보안 문제로 인해 AJAX는 도메인 간 호출을 지원하지 않습니다. 다른 도메인 이름으로 데이터를 호출하는 것은 매우 번거롭습니다. 해결책이 있지만(Stone은 강의에서 프록시를 언급했지만 이해하지는 못하지만 알고 있습니다) 해결될 것입니다). 저는 도메인 간 호출을 보여주기에 충분한 두 개의 파일을 작성했습니다.

기본 파일 index.html




조정된 파일 profile.php

$arr = array(

'name' => ' Chen Yixin',

'nick' => ''deep space',

'contact' => array(
'email' => 'qq dot com의 shengong',
'웹사이트' => 'http://www.chinaz.com',
)
)
$json_string = json_encode($arr)
echo "getProfile($json_string)" ;
?>


분명히 index.html이 profile.php를 호출하면 JSON 문자열이 생성되어 getProfile에 매개변수로 전달된 다음 별명이 div에 삽입됩니다. 이렇게 하면 도메인 간 데이터 상호작용이 완료됩니다. 정말 간단하지 않나요? JSON은 너무나 간단하고 사용하기 쉬우니 무엇을 기다리시나요

더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.