> php教程 > PHP源码 > 본문

PHP JSON 사용 예

大家讲道理
풀어 주다: 2016-11-08 13:48:43
원래의
1099명이 탐색했습니다.

1.json_encode()

주로 배열과 객체를 json 형식으로 변환하는 데 사용되는 함수입니다. 배열 변환의 예를 살펴보겠습니다.

   $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} 

객체 변환의 또 다른 예를 살펴보세요.
   $obj->body           = 'another post';  
$obj->id             = 21;  
$obj->approved       = true;  
$obj->favorite_count = 1;  
$obj->status         = NULL;  
echo json_encode($obj);  
   结果为
{    "body":"another post",  
  "id":21,  
  "approved":true,  
  "favorite_count":1,  
  "status":null  }  
로그인 후 복사


json은 utf-8로 인코딩된 문자만 허용하므로 json_encode()의 매개 변수는 utf여야 합니다. - 8 인코딩, 그렇지 않으면 널 문자 또는 널을 얻게 됩니다. 중국어가 GB2312 인코딩을 사용하거나 외국어가 ISO-8859-1 인코딩을 사용하는 경우 이 점에 특별한 주의를 기울여야 합니다.

2. 인덱스 배열과 연관 배열

PHP는 두 가지 유형의 배열을 지원합니다. 하나는 "값"(값)만 저장하는 인덱스 배열이고, 다른 하나는 저장하는 인덱스 배열입니다. " 이름/값 쌍의 연관 배열입니다.

javascript는 연관 배열을 지원하지 않기 때문에 json_encode()는 인덱스 배열만 배열 형식으로 변환하고 연관 배열은 객체 형식으로 변환합니다.

예를 들어, 이제 인덱스 배열이 있습니다.

   
$arr = Array('one', 'two', 'three');  
echo json_encode($arr);  
로그인 후 복사

결과는 다음과 같습니다.

["one","two"," three"]

연관 배열로 변경하면:
  $arr = Array('1'=>'one', '2'=>'two', '3'=>'three');
   
  echo json_encode($arr);  
로그인 후 복사

결과가 변경됩니다:

{"1":"one","2":"two" ,"3 ":"3"}  


데이터 형식이 "[]"(배열)에서 "{}"(객체)로 변경되었습니다.

"인덱스 배열"을 "객체"에 강제로 적용해야 하는 경우

json_encode( (object)$arr );  
로그인 후 복사

또는

json_encode ( $arr, JSON_FORCE_OBJECT );  
로그인 후 복사

과 같이 작성할 수 있습니다.

3. 클래스 변환

다음은 PHP 클래스입니다.

  class Foo {  
    const     ERROR_CODE = '404';  
    public    $public_ex = 'this is public';  
    private   $private_ex = 'this is private!';  
    protected $protected_ex = 'this should be protected'; 
   
    public function getErrorCode() {  
      return self::ERROR_CODE;  
    }  
  }  
로그인 후 복사

이제 이 클래스의 인스턴스에서 json 변환을 수행합니다.

$foo = new Foo;  
$foo_json = json_encode($foo);  
echo $foo_json;  
로그인 후 복사

출력된 결과는

{"public_ex":"this is public"}   

공용변수(public) 외에 다른 것(상수)을 볼 수 있습니다. , 개인 변수, 메소드 등)이 손실됩니다.

4.json_decode()

이 함수는 json 텍스트를 해당 PHP 데이터 구조로 변환하는 데 사용됩니다. 예는 다음과 같습니다.

   
  $json = '{"foo": 12345}';
   
  $obj = json_decode($json);  
  print $obj->{'foo'}; // 12345  
로그인 후 복사
일반적으로 json_decode()는 항상 배열이 아닌 PHP 객체를 반환합니다. 예:
   
  $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
   
  var_dump(json_decode($json));  
로그인 후 복사
결과는 PHP 개체를 생성하는 것입니다.
object(stdClass)#1 (5) {  
  ["a"] => int(1)    ["b"] => int(2)    ["c"] => int(3)    ["d"] => int(4)    ["e"] => int(5)  
}  
로그인 후 복사

PHP 연관 배열을 강제로 생성하려면 json_decode()에 true 매개변수를 추가해야 합니다.

   
  $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
   
  var_dump(json_decode($json,true));  
로그인 후 복사

결과는 연관 배열입니다.

   
array(5) {  
   ["a"] => int(1)     ["b"] => int(2)     ["c"] => int(3)     ["d"] => int(4)     ["e"] => int(5)  
}  
로그인 후 복사
5. json_decode()의 일반적인 오류

json을 작성하는 다음 세 가지 방법이 모두 잘못된 위치를 확인할 수 있습니다. is?


$bad_json = "{ 'bar': 'baz' }";  
$bad_json = '{ bar: "baz" }';  
$bad_json = '{ "bar": "baz", }';  
로그인 후 복사

이 세 문자열에 대해 json_decode()를 실행하면 null이 반환되고 오류가 보고됩니다.

첫 번째 오류는 json 구분 기호가 작은따옴표가 아닌 큰따옴표만 허용한다는 것입니다. 두 번째 실수는 json 이름-값 쌍의 "이름"(콜론 왼쪽 부분)이 어떤 경우에도 큰따옴표를 사용해야 한다는 것입니다. 세 번째 오류는 마지막 값 뒤에 쉼표를 추가할 수 없다는 것입니다.

또한 json은 객체 및 배열을 나타내는 데에만 사용할 수 있습니다. json_decode()를 문자열이나 값에 사용하면 null이 반환됩니다.

var_dump(json_decode("Hello World"))); //null


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿