>  기사  >  백엔드 개발  >  PHP에서 JSON 적용

PHP에서 JSON 적용

巴扎黑
巴扎黑원래의
2016-11-22 09:52:06889검색

오늘날 인터넷에서 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 닷컴의 신콩',
'웹사이트' => 'http:// www.chenyixin.com',
)
);
$json_string = json_encode($arr);
echo $json_string;
JSON은 매우 간단합니다. 배열. 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.chenyixin.com"}}
연재와 매우 유사하다고 말씀드렸지만 아직도 믿지 못하시네요. 인코딩 후에는 디코딩이 필요합니다. PHP는 해당 함수 json_decode를 제공합니다. json_decode가 실행된 후 작업은 다음과 같습니다.

$arr = 배열 (
'이름' => '첸 이신',
'nick' => '딥 스페이스',
'연락처' => array(
'이메일' => '심공' at qq dot com' ,
'website' => 'http://www.chenyixin.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) ; 프론트 데스크와 상호 작용할 때 해당 기능이 나옵니다. Javascript를 사용하여 이 문자를 사용하는 방법을 살펴보겠습니다.


위에서 이 문자열을 변수에 직접 할당하면 자바스크립트 배열이 됩니다(전문 용어로는 배열이라고 부르면 안 됩니다). , 그러나 PHP의 습관 때문에 이해하기 쉽도록 배열이라고 부릅니다.) 이러한 방식으로 쉽게 arr을 탐색하거나 원하는 작업을 수행할 수 있습니다. 아직 AJAX에 대해서는 언급하지 않았죠? 예, 생각해 보세요. 서버에서 반환된 responseText가 XML 대신 JSON 문자열을 사용한다면 프런트 엔드 Javascript가 이를 처리하는 것이 매우 편리하지 않을까요? 이것이 개 피부 석고가 사용되는 방법입니다.
사실 이 글을 쓰면서 데이터 저장 형식이 다른 점을 제외하면 JSON과 XML 사이에는 큰 차이가 없지만, 아래에서 언급할 점이 하나 있습니다. XML과는 거의 관련이 없지만 JSON의 광범위한 적용, 즉 도메인 간 데이터 호출을 설명할 수 있습니다. 보안 문제로 인해 AJAX는 도메인 간 호출을 지원하지 않습니다. 다른 도메인 이름으로 데이터를 호출하는 것은 매우 번거롭습니다. 해결책이 있지만(Stone은 강의에서 프록시를 언급했지만 이해하지는 못하지만 알고 있습니다) 해결될 것입니다). 저는 도메인 간 호출을 보여주기에 충분한 두 개의 파일을 작성했습니다.
메인 파일 index.html

script type="text/javascript" src="http://www.openphp.cn/demo/profile.php">
조정된 파일 profile.php
< ;?php
$arr = array(
'name' => '첸 이신',
'nick' => '딥 스페이스',
'contact' => array(
'이메일' => 'qq dot com의 shengong',
'웹사이트' => 'http://www.chenyixin.com',
)
)
$json_string = json_encode($arr) ;
echo "getProfile($json_string)";
?>
분명히 index.html이 profile.php를 호출하면 JSON 문자열이 생성되어 getProfile에 전달됩니다. 이런 방식으로 닉네임이 div에 삽입됩니다. 도메인 간 데이터 상호 작용이 완료됩니다.

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