> 백엔드 개발 > PHP 튜토리얼 > PHP 배열을 JSON으로 구문 분석하는 새로운 방법

PHP 배열을 JSON으로 구문 분석하는 새로운 방법

WBOY
풀어 주다: 2024-05-01 15:48:02
원래의
394명이 탐색했습니다.

PHP 배열을 JSON으로 변환하는 두 가지 새로운 방법이 있습니다. JsonSerialized 인터페이스: 객체가 자체 JSON 표현을 정의할 수 있습니다. JSONEncodeReplaceFlags: 유니코드 이스케이프 시퀀스를 이스케이프하지 않는 JSON_UNESCAPED_UNICODE와 같은 특수 문자 처리를 제어합니다.

解析 PHP 数组转 JSON 的新方法

PHP 배열을 JSON으로 구문 분석하는 새로운 방법

PHP에서 배열을 JSON 문자열로 변환하는 것은 일반적인 작업입니다. 기존 json_encode() 함수는 이 기능을 제공하지만 최근에는 추가 기능과 성능 이점을 제공하는 새로운 방법이 등장했습니다. json_encode() 函数提供了这种功能,但近年来,有一些新方法出现,它们提供了额外的功能和性能优势。

JsonSerializable 接口

PHP 5.4 引入了 JsonSerializable 接口,它允许对象定义其自己的 JSON 表示形式。要实现此接口,对象必须实现一个 jsonSerialize() 方法,该方法返回要转换为 JSON 的数据。例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

class Person implements JsonSerializable {

    private $name;

    private $age;

 

    public function __construct($name, $age) {

        $this->name = $name;

        $this->age = $age;

    }

 

    public function jsonSerialize() {

        return [

            'name' => $this->name,

            'age' => $this->age

        ];

    }

}

로그인 후 복사

可以使用 json_encode() 函数将 Person 对象转换为 JSON,如下所示:

1

2

$person = new Person('John Doe', 30);

$json = json_encode($person);

로그인 후 복사

jsonSerialize() 方法将用于生成 JSON 表示形式,从而提供对转换过程的更多控制。

JSONEncodeReplaceFlags

PHP 7.4 引入了 JSONEncodeReplaceFlags 选项,它允许在转换过程中控制对特殊字符的处理。此选项可以与 json_encode() 函数一起使用,如下所示:

1

2

$array = ['a' => "\u00A0", 'b' => "\n"];

$json = json_encode($array, JSON_UNESCAPED_UNICODE);

로그인 후 복사

在此示例中,JSON_UNESCAPED_UNICODE 标志用于保留转义序列,从而生成以下 JSON:

1

2

3

4

{

  "a": "\u00A0",

  "b": "\n"

}

로그인 후 복사

实战案例:RESTful API

在构建 RESTful API 时,经常需要将 PHP 数组转换为 JSON 以响应客户端请求。以下是一个使用 JsonSerializable 接口和 JSON_UNESCAPED_SLASHES

JsonSerialize 인터페이스

🎜🎜PHP 5.4에는 객체가 자신의 JSON 표현을 정의할 수 있는 JsonSerialized 인터페이스가 도입되었습니다. 이 인터페이스를 구현하려면 객체가 JSON으로 변환할 데이터를 반환하는 jsonSerialize() 메서드를 구현해야 합니다. 예: 🎜

1

2

3

4

5

6

7

8

9

10

header('Content-Type: application/json');

 

class User implements JsonSerializable {

    // ...

}

 

$user = new User(...);

$json = json_encode($user, JSON_UNESCAPED_SLASHES);

 

echo $json;

로그인 후 복사
🎜는 json_encode() 함수를 사용하여 다음과 같이 Person 개체를 JSON으로 변환할 수 있습니다. 🎜rrreee🎜jsonSerialize() 메서드를 사용하여 JSON 표현을 생성하여 변환 프로세스를 더 효과적으로 제어할 수 있습니다. 🎜🎜🎜JSONEncodeReplaceFlags🎜🎜🎜PHP 7.4에는 변환 중 특수 문자 처리를 제어할 수 있는 JSONEncodeReplaceFlags 옵션이 도입되었습니다. 이 옵션은 아래와 같이 json_encode() 함수와 함께 사용할 수 있습니다. 🎜rrreee🎜이 예에서 JSON_UNESCAPED_UNICODE 플래그는 이스케이프 시퀀스를 보존하는 데 사용되며 결과는 다음과 같습니다. JSON :🎜rrreee🎜🎜실용 사례: RESTful API🎜🎜🎜RESTful API를 구축할 때 클라이언트 요청에 응답하기 위해 PHP 배열을 JSON으로 변환해야 하는 경우가 많습니다. 다음은 JsonSerialized 인터페이스와 JSON_UNESCAPED_SLASHES 플래그를 사용하는 예입니다. 🎜rrreee🎜이 코드는 슬래시를 이스케이프 처리하지 않고 JSON 응답을 생성하므로 URL 또는 경로를 포함하는 데 적합합니다. 응답. 🎜

위 내용은 PHP 배열을 JSON으로 구문 분석하는 새로운 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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