>백엔드 개발 >PHP 문제 >PHP json 형식을 변환하는 방법

PHP json 형식을 변환하는 방법

藏色散人
藏色散人원래의
2021-03-03 09:43:502392검색

PHP json 형식을 변환하는 방법: 1. json_encode 함수를 통해 php 배열과 개체를 json 형식으로 변환합니다. 2. json_decode 함수를 통해 json 텍스트를 해당 PHP 데이터 구조로 변환합니다.

PHP json 형식을 변환하는 방법

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터.

php json 형식 상호 변환

php는 기본적으로 json_encode($str) 및 json_decode($str)를 제공합니다.

1.json_encode()

이 함수는 PHP 배열과 객체를 json 형식으로 변환합니다.

eg:array
  $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  echo json_encode($arr);
result:{"a":1,"b":2,"c":3,"d":4,"e":5}
eg:object
  $obj->body = 'another post';
  $obj->id = 21;
result:  {    "body":"another post",
    "id":21,
  }

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

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

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

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

 $arr = Array('one', 'two', '3');

 echo json_encode($arr);

결과는 다음과 같습니다.

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

associative array로 바꾸면:

 $arr = Array('1'=>'one', '2'=> '2', '3'=>'3');

 echo json_encode($arr);

결과 변경:

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

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

"인덱스 배열"을 "객체"로 강제 적용해야 하는 경우 다음과 같이 작성할 수 있습니다

 json_encode( (object)$arr);

or

json_encode ($arr, JSON_FORCE_OBJECT);

three , 클래스 변환

다음은 PHP 클래스입니다:

class Foo {

  const ERROR_CODE = '404';

 public $public_ex = 'this is public';

  private $private_ex = 'this 비공개입니다!';

  protected $protected_ex = '이것은 보호되어야 합니다';

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

 $foo = new Foo;

 $foo_json = json_encode($foo);

 echo $foo_json;

출력 결과는

{" public_ex":"this is public"}

공용 변수(공용)를 제외하고 다른 것(상수, 전용 변수, 메서드 등)이 누락된 것을 볼 수 있습니다.

[추천 학습: PHP 비디오 튜토리얼]

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"] =>

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"] => 4)
   ["e "] => int(5)

 }

5. json_decode()의 일반적인 오류

json을 작성하는 다음 세 가지 방법은 모두 오류가 어디에 있는지 알 수 있습니까? ?

  $bad_json = "{ 'bar': 'baz' }";

  $bad_json = '{ bar: "baz" }';

  $bad_json = '{ "bar": "baz", }' ;

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

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

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

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

위 내용은 PHP json 형식을 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.