현재 위치: > 최신 기사 목록> laravel에서 jsonserializable :: jsonserialize 기능의 실제 적용

laravel에서 jsonserializable :: jsonserialize 기능의 실제 적용

gitbox 2025-05-28

PHP에서 Jsonserializable 인터페이스는 객체 직렬화를 JSON에 처리하는 데 중요한 도구입니다. 특히 JSON_ENCODE ()를 사용할 때 객체가 JSON 인코딩의 동작을 사용자 정의 할 수 있습니다. Laravel Project에서는 JSonsonserializable :: Jsonserialize 방법을 올바르게 구현하는 방법을 마스터하면 데이터 전송의 유연성을 향상시킬뿐만 아니라 API 반환 구조를 비즈니스 요구에 더 많이 만들 수 있습니다.

이 기사를 사용하면 jsonsonializable 의 깊이를 이해하고 Laravel 실제 사례를 사용하여 JSON 출력을 사용자 정의하는 방법을 보여줍니다.


1. Jsonserializable이란 무엇입니까?

jsonserializable 은 PHP 5.4 버전에 도입 된 인터페이스로, 방법을 선언합니다.

 public function jsonSerialize();

이 방법에 의해 반환 된 데이터는 json_encode () 에 의해 직렬화 된 것으로 사용됩니다. 이 인터페이스를 구현함으로써 클래스는 JSON으로 변환 된 데이터 구조를 완전히 제어 할 수 있습니다.


2. Laravel Project에서 Jsonserializable을 사용해야하는 이유는 무엇입니까?

Laravel 자체는 Eloquent ORM을 사용하여 모델 데이터를 처리하며 모델은 일반적으로 자동으로 JSON으로 변환됩니다. 그러나 원하는 시나리오가 있습니다.

  • Custom JSON은 필드와 형식을 반환합니다.

  • 민감한 정보 (예 : 암호, 토큰);

  • 관련 데이터를 중첩 할 때보다 유연한 구조 조정;

  • 프론트 엔드 처리의 복잡성을 단순화하십시오.

현재 jsonserializable 은 매우 적합합니다.


3. 실제 사례 : Laravel 모델에서 jsonserializable 구현

필드가있는 사용자 모델이 있다고 가정합니다.

  • ID

  • 이름

  • 이메일

  • 비밀번호

  • 생성 된 _at

  • updated_at

우리는 희망 :

  • 출력시 암호를 숨기십시오.

  • 간결한 시간 문자열로 만들어졌습니다 .

  • 계산 된 속성 프로파일 _URL을 추가하십시오.

1. jsonserializable을 구현하려면 사용자 모델을 수정하십시오

 <?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),
        ];
    }
}

2. 컨트롤러에서 JSON을 반환합니다

 <?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);
    }
}

3. 라우팅 구성

 <?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;

Route::get('user/{id}', [UserController::class, 'show']);

4. 작동 결과의 예

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 필드를 추가했습니다.


5. 요약

  • jsonserializable 인터페이스를 사용하면 JSON에 대한 모델 직렬화의 동작을 완전히 제어 할 수 있습니다.

  • Laravel의 웅변과 함께 사용하는 것이 매우 편리하며 호환성이 우수합니다.

  • API 출력 사용자 정의, 민감한 데이터 보호, 형식 균일 성 및 기타 시나리오에 적합합니다.

  • Laravel의 응답 ()-> json () 메소드와 함께 간결하고 직관적입니다.

JSON 데이터 구조에 대한 세부적인 제어가 필요한 경우 JSONSERIALIZALE :: JSONSERIALIZE는 필수 도구입니다.