English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 PHP에서 JSON 데이터를 인코딩하고 디코딩하는 방법을 배울 것입니다.
JSON을 표현 JavaScript Object Notation
JSON과 XML과 마찬가지로 JSON은 텍스트 기반의 형식으로, 인간과 컴퓨터 모두에게 쉽게 작성하고 이해할 수 있지만, XML과 달리 JSON 데이터 구조가 사용하는 대역폭은 XML 버전보다 적습니다. JSON은 두 가지 기본 구조를 기반으로 합니다:
객체:이는 키로 정의됩니다/값 쌍(즉 key:value)의 집합입니다. 각 객체는 왼쪽 괄호{으로 시작되고 오른쪽 괄호}로 끝납니다。 여러 개의 키/값 쌍은 쉼표로 구분됩니다,。
배열:정의된 값을 가진 순서대로 정렬된 목록입니다. 배열은 왼쪽 괄호로 시작하여 오른쪽 괄호[로 끝납니다]. 값은 쉼표로 구분됩니다,.
JSON에서 키는 항상 문자열이며, 값은string,number,true또는false,null또는object또는array문자열은 양쪽의 괄호("")로 묶여야하며, \ , \ 및 \.와 같은逃脱 문자를 포함할 수 있습니다. JSON 객체는 다음과 같이 보일 수 있습니다:
{ "book": { "name": "Harry Potter and the Goblet of Fire", "author": "J. K. Rowling", "year": 2000, "genre": "Fantasy Fiction", "bestseller": true } }
JSON 배열의 예제는 다음과 같습니다:
{ "fruits": [ "Apple", "Banana", "Strawberry", "Mango" ] }
ヒント:데이터 교환 형식은 다른 플랫폼과 운영 체제 간 데이터를 교환하거나 교환하기 위한 텍스트 형식입니다. JSON은 웹 애플리케이션에서 가장 인기 있고 가벼운 데이터 교환 형식입니다.
JSON 데이터 구조는 PHP 배열과 매우 유사합니다. PHP는 내장 함수를 사용하여 JSON 데이터를 인코딩하고 디코딩할 수 있습니다. 이 함수는 json_encode()과 json_decode()입니다. 이 두 함수는 UTF-8을 사용해야 합니다.-8인코딩된 문자 데이터.
PHP에서 json_encode() 함수는 값이 JSON 형식으로 인코딩됩니다. 인코딩된 값은 자원을 제외한 모든 값이 될 수 있습니다.PHP 데이터 타입예를 들어 데이터베이스나 파일 핸들러. 다음 예제에서 PHP 데이터 타입을 JSON으로 변환하는 방법을 보여줍니다.PHP 관련 배열JSON 객체로 인코딩됩니다:
<?php //관련 배열 $marks = array("Peter"=>65, "Harry":80, "John":78, "Clark":90); echo json_encode($marks); ?>테스트 봐‹/›
위 예제의 출력은 다음과 같이 될 것입니다:
{"Peter":65,"Harry":80,"John":78,"Clark":90}
동일하게, 다음과 같은 것을 인코딩할 수 있습니다.PHP 인덱스 배열JSON 배열로 인코딩된 것처럼 보입니다:
<?php //인덱스 배열 $colors = array("Red", "Green", "Blue", "Orange", "Yellow"); echo json_encode($colors); ?>테스트 봐‹/›
위 예제의 출력은 다음과 같이 될 것입니다:
["Red","Green","Blue","Orange","Yellow"]
JSON_FORCE_OBJECT 옵션을 사용하여 json_encode() 함수를 사용하여 PHP 인덱스 배열을 JSON 객체로 강제로 반환할 수 있습니다. 다음 예제에서 보여줍니다:
<?php //인덱스 배열 $colors = array("Red", "Green", "Blue", "Orange", "Yellow"); echo json_encode($colors, JSON_FORCE_OBJECT); ?>테스트 봐‹/›
위 예제의 출력은 다음과 같이 될 것입니다:
{"0":"Red","1:"Green",2:"Blue",3:"Orange"}
위 예제에서 볼 수 있듯이, 비관련 배열은 배열이나 객체로 인코딩될 수 있습니다. 그러나 관련 배열은 항상 객체로 인코딩됩니다.
JSON 데이터를 디코딩하는 것은 인코딩과 같이 간단합니다. PHP json_decode() 함수를 사용하여 JSON 인코딩된 문자열을 적절한 PHP 데이터 타입으로 변환할 수 있습니다. 다음 예제에서 JSON 객체를 디코딩하거나 변환하는 방법을 보여줍니다.PHP 객체。
<?php //JSON 데이터를 PHP 변수에 저장합니다 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; var_dump(json_decode($json)); ?>테스트 봐‹/›
위 예제의 출력은 다음과 같습니다:
object(stdClass)#1 (4) { ["Peter"]=> int(65) ["Harry"]=> int(8) ["John"]=> int(78) ["Clark"]=> int(90)}
기본적으로, json_decode() 함수는 객체를 반환합니다. 하지만, 두 번째 파라미터 $assoc을 지정할 수 있습니다. 이 파라미터는 불리언 값을 받아들입니다. true로 설정하면 JSON 객체가 연관 배열로 디코딩됩니다. 기본적으로 false입니다. 다음은 예제입니다:}}
<?php //JSON 데이터를 PHP 변수에 저장합니다 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; var_dump(json_decode($json, true)); ?>테스트 봐‹/›
위 예제의 출력은 다음과 같습니다:
array(4) { ["Peter"]=> int(65) ["Harry"]=> int(8) ["John"]=> int(78) ["Clark"]=> int(90)}
이제, JSON 데이터를 디코딩하고 PHP에서 JSON 객체나 배열의 각 요소에 접근하는 방법을 보여주는 예제를 볼 것입니다.
<?php //JSON编码의 문자열을 PHP 변수에 할당합니다 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; //JSON 데이터를 PHP 관계 배열로 디코딩합니다 $arr = json_decode($json, true); //관계 배열에서 값을 접근합니다 echo $arr["Peter"]; //출력: 65 echo $arr["Harry"]; //출력: 80 echo $arr["John"]; //출력: 78 echo $arr["Clark"]; //출력: 90 //JSON 데이터를 PHP 객체로 디코딩합니다 $obj = json_decode($json); //반환된 객체에서 값을 접근합니다 echo $obj;->Peter; //출력: 65 echo $obj;->Harry; //출력: 80 echo $obj;->John; //출력: 78 echo $obj;->Clark; //출력: 90 ?>테스트 봐‹/›
다음과 같이 사용할 수 있습니다foreach()다음과 같이 디코딩된 데이터를 반복적으로 순회합니다:
<?php //JSON编码의 문자열을 PHP 변수에 할당합니다 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; //JSON 데이터를 PHP 관계 배열로 디코딩합니다 $arr = json_decode($json, true); //관계 배열을 순회합니다 foreach($arr as $key=>$value){ echo $key . "=>" . $value . "<br>"; } echo "<hr>"; //JSON 데이터를 PHP 객체로 디코딩합니다 $obj = json_decode($json); //객체를 순회합니다 foreach($obj as $key => $value){ echo $key . "=>" . $value . "<br>"; } ?>테스트 봐‹/›
JSON 객체와 배열도 내장될 수 있습니다. JSON 객체는 다른 JSON 객체, 배열, 내장 배열, JSON 객체 배열 등을 자유롭게 포함할 수 있습니다. 다음 예제는 내장된 JSON 객체를 디코딩하여 PHP에서 모든 값을 출력하는 방법을 보여줍니다.
<?php //내장 값을 추출하기 위한 재귀 함수를 정의합니다 function printValues($arr) { global $count; global $values; //입력이 배열인지 확인합니다 if(!is_array($arr)){ die("에러: 입력이 배열이 아닙니다."); } /* 배열을 순회하면, value 자체가 배열이면 재귀적으로 호출됩니다. 함수는 발견된 값을 출력 항목 배열에 추가합니다, 발견된 각 값에 대해 카운터를 증가시킵니다1 */ foreach($arr as $key=>$value){ if(is_array($value)){ printValues($value); } else{ $values[] = $value; $count++; } } // 배열에서 찾은 총 갯수와 값을 반환합니다 return array('total' => $count, 'values' => $values); } //JSON编码의 문자열을 PHP 변수에 할당합니다 $json = '{ "book": { "name": "Harry Potter and the Goblet of Fire", "author": "J. K. Rowling", "year": 2000, "characters": ["Harry Potter", "Hermione Granger", "Ron Weasley"], "genre": "Fantasy Fiction", "price": { "paperback": "$10.40", "hardcover": "$20.32", "kindle": "4.11" } } }'; //JSON 데이터를 PHP 연관 배열 형식으로 디코딩합니다 $arr = json_decode($json, true); //이 함수를 호출하고 모든 값을 출력합니다 $result = printValues($arr); echo "<h3>" . $result["total"] . " value(s) found: </h3>"; echo implode("<br>", $result["values"]); echo "<hr>"; //값을 출력합니다 echo $arr["book"]["author"] . "<br>"; //출력: J. K. Rowling echo $arr["book"]["characters"][0] . "<br>"; //출력: Harry Potter echo $arr["book"]["price"]["hardcover"]; //출력: $20.32 ?>테스트 봐‹/›