PHP 8 속성을 사용한 JSON 비정렬화
JSON 데이터가 있다고 가정해 보겠습니다.
{
"airline": "Foo Airlines",
"aircraft": {
"type": "Boeing 747"
},
"route": [
{
"sequence": 1,
"cost": 50.25,
"luggageIncluded": true,
"airline": "Foo Airlines",
"departureAirport": "London Gatwick",
"arrivalAirport": "Malta International"
},
{
"sequence": 2,
"cost": 20.25,
"luggageIncluded": true,
"airline": "Foo Airlines",
"departureAirport": "Malta International",
"arrivalAirport": "London Gatwick"
}
]
}
위의 데이터는 런던 개트윅발 몰타인터내셔널행 항공편을 나타냅니다.
위의 데이터 구조를 나타내는 Flight 클래스와 FlightRoute 클래스의 두 가지 클래스가 있다고 가정해 보겠습니다.
비행.php
class Flight
{
#[JSON(field: 'airline')]
public string $airlineName;
#[JSON(field: 'aircraft.type')]
public string $aircraftType;
#[JSON(field: 'route', type: FlightRoute::class)]
public array $route;
}
FlightRoute.php
class FlightRoute
{
#[JSON('sequence')]
public int $sequence;
#[JSON('cost')]
public float $cost;
#[JSON('luggageIncluded')]
public bool $luggageIncluded;
#[JSON('airline')]
public string $airline;
#[JSON('departureAirport')]
public string $departureAirport;
#[JSON('arrivalAirport')]
public string $arrivalAirport;
}
보시다시피 라이브러리의 JSON 속성을 사용하여 JSON 데이터의 필드를 선언하고 데이터가 배열인 경우 유형을 선언합니다.
이 데이터를 비정렬화해 보겠습니다. :)
// Create a new flight class
$flight = new Flight();
// Load our JSON data from file
$jsonData = json_decode(file_get_contents('flight.json'), true);
// Unmarshal JSON
Unmarshal::decode($flight, $jsonData);
그리고 짜잔!
class Flight#3 (3) {
public string $airlineName =>
string(12) "Foo Airlines"
public string $aircraftType =>
string(10) "Boeing 747"
public array $route =>
array(2) {
[0] =>
class FlightRoute#11 (6) {
public int $sequence =>
int(1)
public float $cost =>
double(50.25)
public bool $luggageIncluded =>
bool(true)
public string $airline =>
string(12) "Foo Airlines"
public string $departureAirport =>
string(14) "London Gatwick"
public string $arrivalAirport =>
string(19) "Malta International"
}
[1] =>
class FlightRoute#8 (6) {
public int $sequence =>
int(2)
public float $cost =>
double(20.25)
public bool $luggageIncluded =>
bool(true)
public string $airline =>
string(12) "Foo Airlines"
public string $departureAirport =>
string(19) "Malta International"
public string $arrivalAirport =>
string(14) "London Gatwick"
}
}
}
패키지를 사용하려면 다음을 사용하여 설치할 수 있습니다.
composer require mrbenosborne/json-unmarshal
즐거운 코딩! 🍺
https://github.com/mrbenosborne/json-unmarshal
크레딧: 영웅 이미지, https://php.watch/articles/php-attributes
Reference
이 문제에 관하여(PHP 8 속성을 사용한 JSON 비정렬화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mrbenosborne/json-unmarshal-using-php-8-attributes-2p3f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)