PHP JSON
json이란 무엇인가요?
JSON(JavaScript Object Notation)은 주로 데이터 전송에 사용되는 경량 데이터 교환 형식입니다.
JSON은 JavaScript 개체에 표시된 데이터 세트를 문자열로 변환할 수 있으며, 문자열은 함수 간에 쉽게 전달되거나 웹 클라이언트에서 비동기 애플리케이션 프로그램의 서버로 전달될 수 있습니다. 이 문자열은 조금 이상해 보이지만 JavaScript는 이를 쉽게 해석할 수 있으며 JSON은 "이름/값 쌍"보다 더 복잡한 구조를 나타낼 수 있습니다. 예를 들어, 단순한 키와 값 목록이 아닌 배열과 복잡한 객체를 표현할 수 있습니다.
이 장은 이해를 돕기 위한 것이므로 집중해서 볼 필요는 없습니다.
환경설정
php5.2.0 이상에서는 JSON 확장 기능이 내장되어 있습니다.
JSON 함수
json_encode
PHP json_encode ()는 변수를 JSON으로 인코딩하는 데 사용됩니다. 이 함수는 성공적으로 실행되면 JSON 데이터를 반환하고, 그렇지 않으면 FALSE를 반환합니다.
구문
string json_encode ( $value [, $options = 0 ] )
매개변수
· 값: 인코딩할 값입니다. 이 함수는 UTF-8로 인코딩된 데이터에만 유효합니다.
· 옵션: 다음 상수로 구성된 바이너리 마스크: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT
인스턴스
다음 예에서는 PHP 배열을 JSON 형식 데이터로 변환하는 방법을 보여줍니다.
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
위 코드의 실행 결과는 다음과 같습니다.
{"a":1,"b":2 ,"c ":3,"d":4,"e":5}
다음 예에서는 PHP 개체를 JSON 형식 데이터로 변환하는 방법을 보여줍니다.
<?php class Emp { public $name = ""; public $hobbies = ""; public $birthdate = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p"); $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e); ?>
실행 결과 위 코드는 다음과 같습니다.
{"name":"sachin","hobbies":"sports","birthdate":"08/05/1974 12:20:03 pm"}
json_decode
PHP json_decode() 함수는 JSON 형식 문자열을 디코딩하고 이를 PHP 변수로 변환하는 데 사용됩니다.
구문
혼합 json_decode($json [,$assoc = false [, $length = 512 [, $options = 0 ]]])
<数>매개변수
· JSON_STRING: 디코딩할 JSON 문자열은 UTF-8 코딩 데이터여야 합니다.· assoc: 이 매개변수가 true이면 다음으로 반환됩니다. return. 배열, FALSE인 경우 객체를 반환합니다. · 깊이: 재귀 깊이를 지정하는 정수형 매개 변수 · 옵션: 바이너리 마스크, 현재 JSON_BIGINT_AS_STRING만 지원됩니다.
예
다음 예는 JSON 데이터를 디코딩하는 방법을 보여줍니다.<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
위 코드의 실행 결과는 다음과 같습니다.
object(stdClass)#1 (5) {
["a"] =>
["b"] => int(2) ["c"] => int(3) ["d"] => ) ["e"] => int(5)} 배열(5) { [ "a" ] => int(1) ["b"] => int(2) ["c"] =>["d"] => int(4)
["e"] => int(5)
}
PHP의 Json 형식 규칙
- 병렬 데이터는 쉼표(", ")로 구분됩니다.
- 매핑이 완료됩니다. 콜론(":")은을 나타냅니다. - 병렬 데이터의 컬렉션(배열)은 대괄호("[]")로 표시됩니다.
- 매핑된 컬렉션(객체)은 중괄호("{})로 표시됩니다. ")
다음 문장:
"베이징의 면적은 16,800평방 킬로미터이고, 상주 인구는 1,600만 명입니다. 상하이의 면적은 6,400평방 킬로미터입니다. 영구 인구는 1,800만명입니다." 다음과 같이 json 형식으로 작성됩니다.
[
{"City":"Beijing","Area":16800," Population":1600},
{"City" ":"Shanghai","Area":6400,"Population":1800}
]
작동하는 기능 PHP의 json
암호화 json_encode
json_decode 해독
1차원 배열을 json 데이터 형식으로 변환<?php
$arr_1 = array();
$arr_1['username'] = 'lisi';
$arr_1['age'] = 20;
echo json_encode($arr_1);//{"username":"lisi","age":20}
?>
<?php
$arr_2 = array();
// 三维数组
$arr_2['member']['lisi']['job'] = "worker";
$arr_2['member']['lisi']['age'] = 30;
$arr_2['member']['wangwu']['job'] = "student";
$arr_2['member']['wangwu']['age'] = 10;
echo json_encode($arr_2);
//{"member":{"lisi":{"job":"worker","age":30},"wangwu":{"job":"student","age":10}}}
?>
객체가 다음과 같은 경우 json 데이터로 변환, 공용 변수만 변환, 전용 변수는 변환 안 함
<?php class Person{ public $name = "public name"; protected $ptName = "protected name"; private $pName = "private name"; public function sayName(){ return $this->name; } } $person1 = new Person(); echo json_encode($person1);//{"name":"public name"} ?>
json 데이터 형식을 객체 유형으로 변환
<?php
$jsonStr = '{"key1":"value1","key2":"value2"}';
print_r(json_decode($jsonStr,false));//stdClass Object ( [key1] => value1 [key2] => value2
?>
<?php
$jsonStr = '{"key1":"value1","key2":"value2"}';
print_r(json_decode($jsonStr,true));//Array ( [key1] => value1 [key2] => value2 )
?>
json_decode($jsonStr ,true); 두 번째 매개변수가 true이면 결과가 배열 유형으로 변환됩니다. 기본적으로
객체로 변환됩니다.