PHP 는 JSON 과 json 을 배열 로 복원 합 니 다.

5703 단어 PHPJSON
전에 저 는 phop 을 써 서 제 이 슨 데이터 의 간단 한 인 스 턴 스 를 되 돌려 주 었 습 니 다.방금 인터넷 에 접 속 했 는데 갑자기 글 한 편 을 발 견 했 습 니 다.제 이 슨 을 소개 하 는 것 도 상세 하고 참고 할 만 합 니 다.내용 은 아래 와 같다
5.2 버 전부터 PHP 원생 제공 jsonencode()와 jsondecode()함수,전 자 는 인 코딩 에 사용 되 고 후 자 는 디 코딩 에 사 용 됩 니 다.
1.jsonencode()

<?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}
대상 변환 의 예 를 다시 봅 니 다.

$obj->body           = 'another post';
$obj->id             = 21;
$obj->approved       = true;
$obj->favorite_count = 1;
$obj->status         = NULL;
echo json_encode($obj);
 출력
[/code]
{
   "body":"another post",
   "id":21,
   "approved":true,
   "favorite_count":1,
   "status":null
 }
[/code]
 json 은 utf-8 인 코딩 문자 만 받 기 때문에 jsonencode()의 인 자 는 utf-8 인 코딩 이 어야 합 니 다.그렇지 않 으 면 빈 문자 나 null 을 얻 을 수 있 습 니 다.중국어 로 GB 2312 인 코딩 을 사용 하거나 외국어 로 ISO-8859-1 인 코딩 을 사용 할 때 특히 주의해 야 한다.
2.색인 배열 과 관련 배열
PHP 는 두 개의 배열 을 지원 합 니 다.하 나 는'값'(value)만 저장 하 는 색인 배열(indexed array)이 고,다른 하 나 는'이름 값 쌍'(name/value)을 저장 하 는 관련 배열(associative array)입 니 다.
javascript 은 관련 배열 을 지원 하지 않 기 때문에 jsonencode()는 색인 배열(indexed array)만 배열 형식 으로 바 꾸 고 관련 배열(associative array)을 대상 형식 으로 바 꿉 니 다.
예 를 들 어 현재 색인 배열 이 있 습 니 다.

$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":"three"}
 데이터 형식 이'[]'(배열)에서'{}'(대상)으로 바 뀌 었 음 을 주의 하 십시오.
'색인 배열'을'대상'으로 강제로 바 꿀 필요 가 있다 면 이렇게 쓸 수 있 습 니 다.

json_encode( (object)$arr );
 혹은

json_encode ( $arr, JSON_FORCE_OBJECT );
 3.클래스(class)의 전환
다음은 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.jsondecode()
이 함 수 는 json 텍스트 를 해당 하 는 PHP 데이터 구조 로 변환 하 는 데 사 용 됩 니 다.다음은 하나의 예 이다.

$json = '{"foo": 12345}';
$obj = json_decode($json);
print $obj->{'foo'}; // 12345
 일반적인 상황 에서 jsondecode()는 항상 배열 이 아 닌 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 관련 배열 을 강제로 생 성 하려 면 jsondecode()는 인자 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.jsondecode()의 일반적인 오류
아래 세 가지 제 이 슨 의 문법 은 모두 틀 렸 습 니 다.당신 은 어디 에 잘못 되 었 는 지 볼 수 있 습 니까?

$bad_json = "{ 'bar': 'baz' }";
$bad_json = '{ bar: "baz" }';
$bad_json = '{ "bar": "baz", }';
 이 세 문자열 에 json 을 실행 합 니 다.decode()는 모두 null 로 돌아 가 잘못 보고 합 니 다.
첫 번 째 오 류 는 json 의 구분자(delimiter)는 작은 따옴표 만 사용 할 수 있 고 작은 따옴표 만 사용 할 수 없습니다.두 번 째 오 류 는 json 이름 값 이 맞 는'이름'(가짜 왼쪽 부분)입 니 다.어떤 경우 에 도 작은 따옴표 를 사용 해 야 합 니 다.세 번 째 오 류 는 마지막 값 이후 에 쉼표(trailing coma)를 추가 할 수 없습니다.
또한,json 은 대상(object)과 배열(array)만 표시 할 수 있 으 며,문자열 이나 수치 에 json 을 사용 하면decode(),null 로 돌아 갑 니 다.

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

좋은 웹페이지 즐겨찾기