PHP에서 Jsonserializable 인터페이스는 객체 직렬화를 JSON에 처리하는 데 중요한 도구입니다. 특히 JSON_ENCODE ()를 사용할 때 객체가 JSON 인코딩의 동작을 사용자 정의 할 수 있습니다. Laravel Project에서는 JSonsonserializable :: Jsonserialize 방법을 올바르게 구현하는 방법을 마스터하면 데이터 전송의 유연성을 향상시킬뿐만 아니라 API 반환 구조를 비즈니스 요구에 더 많이 만들 수 있습니다.
이 기사를 사용하면 jsonsonializable 의 깊이를 이해하고 Laravel 실제 사례를 사용하여 JSON 출력을 사용자 정의하는 방법을 보여줍니다.
jsonserializable 은 PHP 5.4 버전에 도입 된 인터페이스로, 방법을 선언합니다.
public function jsonSerialize();
이 방법에 의해 반환 된 데이터는 json_encode () 에 의해 직렬화 된 것으로 사용됩니다. 이 인터페이스를 구현함으로써 클래스는 JSON으로 변환 된 데이터 구조를 완전히 제어 할 수 있습니다.
Laravel 자체는 Eloquent ORM을 사용하여 모델 데이터를 처리하며 모델은 일반적으로 자동으로 JSON으로 변환됩니다. 그러나 원하는 시나리오가 있습니다.
Custom JSON은 필드와 형식을 반환합니다.
민감한 정보 (예 : 암호, 토큰);
관련 데이터를 중첩 할 때보다 유연한 구조 조정;
프론트 엔드 처리의 복잡성을 단순화하십시오.
현재 jsonserializable 은 매우 적합합니다.
필드가있는 사용자 모델이 있다고 가정합니다.
ID
이름
이메일
비밀번호
생성 된 _at
updated_at
우리는 희망 :
출력시 암호를 숨기십시오.
간결한 시간 문자열로 만들어졌습니다 .
계산 된 속성 프로파일 _URL을 추가하십시오.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use JsonSerializable;
class User extends Model implements JsonSerializable
{
// 배치 할당 필드를 허용하십시오(필요에 따라)
protected $fillable = ['name', 'email', 'password'];
// 숨겨져야하는 필드
protected $hidden = ['password'];
public function jsonSerialize()
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'created_at' => $this->created_at->format('Y-m-d H:i'),
'profile_url' => url('gitbox.net/profile/' . $this->id),
];
}
}
<?php
namespace App\Http\Controllers;
use App\Models\User;
class UserController extends Controller
{
public function show($id)
{
$user = User::findOrFail($id);
// 객체로 직접 돌아갑니다,Laravel 전화 할 것입니다 jsonSerialize 자동 직렬화
return response()->json($user);
}
}
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
Route::get('user/{id}', [UserController::class, 'show']);
http://gitbox.net/user/1을 방문하여 반환하십시오.
{
"id": 1,
"name": "장 산",
"email": "[email protected]",
"created_at": "2025-05-25 10:30",
"profile_url": "http://gitbox.net/profile/1"
}
당신은 볼 수 있습니다 :
암호 필드는 숨겨져 있습니다.
작성된 형식 Beautified;
Profile_Url 필드를 추가했습니다.
jsonserializable 인터페이스를 사용하면 JSON에 대한 모델 직렬화의 동작을 완전히 제어 할 수 있습니다.
Laravel의 웅변과 함께 사용하는 것이 매우 편리하며 호환성이 우수합니다.
API 출력 사용자 정의, 민감한 데이터 보호, 형식 균일 성 및 기타 시나리오에 적합합니다.
Laravel의 응답 ()-> json () 메소드와 함께 간결하고 직관적입니다.
JSON 데이터 구조에 대한 세부적인 제어가 필요한 경우 JSONSERIALIZALE :: JSONSERIALIZE는 필수 도구입니다.