> 백엔드 개발 > PHP 튜토리얼 > PHP JSON 사용 예

PHP JSON 사용 예

WBOY
풀어 주다: 2016-07-23 08:54:58
원래의
891명이 탐색했습니다.

1.json_encode()

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

  1.  $arr = 배열('a'=>1,'b'=>2,'c'=>3,'d'=>4,' e'=>5); 
  2. echo json_encode($arr); 
코드 복사

결과는

  1.  {"a":1,"b":2,"c":3,"d":4,"e":5} 
코드 복사

객체 변환의 또 다른 예를 살펴보겠습니다.

  1. $obj->body = '다른 게시물';
  2. $obj->id = 21;
  3. $obj->approved = true; > $obj->favorite_count = 1;
  4. $obj->status = NULL
  5. echo json_encode($obj)
코드 복사
결과는

    🎜> "status":null }  
  1. 코드 복사
json은 utf-8로 인코딩된 문자만 허용하므로 json_encode()의 매개변수는 utf-8로 인코딩되어야 합니다. 그렇지 않으면 빈 문자 또는 null이 발생합니다. 중국어가 GB2312 인코딩을 사용하거나 외국어가 ISO-8859-1 인코딩을 사용하는 경우 이 점에 특별한 주의를 기울여야 합니다.
2. 인덱스 배열과 연관 배열

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

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

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

$arr = Array('1', '2', '3')
echo json_encode($arr)
    복사 코드
결과는 다음과 같습니다.

 ["하나","둘","셋"]  
코드 복사
연관배열로 변경하는 경우:

 $arr = Array('1'=>'1', '2'=>'2', '3'=>'3');
 
echo json_encode($arr);  
  1. 코드 복사
결과가 변경되었습니다:

 {"1":"one","2":"two","3":" three"}  
코드 복사
데이터 형식이 "[]"(배열)에서 "{}"(객체)로 변경되었습니다. "인덱스 배열"을 "객체"에 강제로 적용해야 한다면 다음과 같이 쓰면 됩니다

json_encode( (object)$arr )
코드 복사
또는

json_encode( $arr, JSON_FORCE_OBJECT )
코드 복사
3. 클래스 전환
다음은 PHP 클래스입니다.

class Foo {
const ERROR_CODE = '404';
public $public_ex = '공개입니다';
private $private_ex = '비공개입니다! ';
    protected $protected_ex = '이것은 보호되어야 합니다.';
  1. public function getErrorCode() {
  2. return self::ERROR_CODE;

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

    1. $foo = new Foo;
    2. $foo_json = json_encode($foo)
    3. 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 
    1. 코드 복사
    일반적으로 json_decode()는 항상 배열이 아닌 PHP 객체를 반환합니다. 예:

     $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
     
    var_dump(json_decode($json));  
    1. 코드 복사
    결과는 PHP 객체입니다:

    object(stdClass)#1 (5) {
     ["a"] => int(1) ["b"] => int(2)  "c "] => int(3) ["d"] => int(4) ["e"] => int(5) 
     } 
    1. 코드 복사
    PHP 연관 배열 생성을 강제하려면 json_decode()에 true 매개변수를 추가해야 합니다.

     $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
     
    var_dump(json_decode($json,true));  
    1. 코드 복사
    결과는 연관 배열입니다.

    배열(5) {
    > int(3)  ["d"] => int(4)  ["e"] =>
     } 
    1. 코드 복사
    5. json_decode()의 일반적인 오류

    json을 작성하는 다음 세 가지 방법이 모두 잘못되었습니다. 어디에서 오류가 발생했는지 알 수 있나요?

    $bad_json = "{ 'bar': 'baz' }";
    $bad_json = '{ bar: "baz" }'; { "bar": "baz", }'; 
    1. 코드 복사
    이 세 문자열에 대해 json_decode()를 실행하면 null이 반환되고 오류가 보고됩니다. 첫 번째 오류는 json 구분 기호가 작은따옴표가 아닌 큰따옴표만 허용한다는 것입니다. 두 번째 실수는 json 이름-값 쌍의 "이름"(콜론 왼쪽 부분)이 어떤 경우에도 큰따옴표를 사용해야 한다는 것입니다. 세 번째 오류는 마지막 값 뒤에 쉼표를 추가할 수 없다는 것입니다.
    또한 json은 객체 및 배열을 나타내는 데에만 사용할 수 있습니다. json_decode()를 문자열이나 값에 사용하면 null이 반환됩니다.



     var_dump(json_decode("Hello World")) //null
    코드 복사


    PHP, JSON

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