Aktueller Standort: Startseite> Neueste Artikel> Die tatsächliche Anwendung der JsonSerializable :: Jsonserialize -Funktion in Laravel

Die tatsächliche Anwendung der JsonSerializable :: Jsonserialize -Funktion in Laravel

gitbox 2025-05-28

In PHP ist die JsonSerializable -Schnittstelle ein wichtiges Instrument zur Handhabung der Serialisierung von Objekten mit JSON. Es ermöglicht Objekten, das Verhalten der JSON -Codierung anzupassen, insbesondere bei Verwendung von JSON_Encode () . Im Laravel -Projekt kann das Beherrschen der korrekten Implementierung der JsonSerializable :: JsonSerialize -Methode nicht nur die Flexibilität der Datenübertragung verbessern, sondern auch die API -Renditestruktur im Einklang mit den geschäftlichen Anforderungen verbessern.

In diesem Artikel werden Sie JsonSerializable ausführlich verstehen und einen Praktischen Fall Laravel verwenden, um zu zeigen, wie Sie ihn anwenden, um die JSON -Ausgabe anzupassen.


1. Was ist JsonSerializable?

JsonSerializable ist eine Schnittstelle, die in der PHP 5.4 -Version eingeführt wird und eine Methode erklärt:

 public function jsonSerialize();

Die nach dieser Methode zurückgegebenen Daten werden von json_encode () als serialisiert verwendet. Durch die Implementierung dieser Schnittstelle kann die Klasse die in JSON konvertierte Datenstruktur vollständig steuern.


2. Warum müssen Sie JsonSerializable im Laravel -Projekt verwenden?

Laravel selbst verwendet eloquente ORM, um Modelldaten zu verarbeiten, und das Modell wird normalerweise automatisch in JSON konvertiert. Aber es gibt einige Szenarien, die Sie vielleicht möchten:

  • Custom JSON gibt Felder und Formate zurück;

  • Filtern sensible Informationen (z. B. Passwörter, Token);

  • Flexiblere Strukturanpassung beim Verschachteln der damit verbundenen Daten;

  • Vereinfachen Sie die Komplexität der Front-End-Verarbeitung.

Zu diesem Zeitpunkt ist JsonSerializable sehr geeignet.


3. Praktischer Fall: Implementierung von JsonSserializable im Laravel -Modell

Angenommen, wir haben ein Benutzermodell mit Feldern:

  • Ausweis

  • Name

  • E-Mail

  • Passwort

  • erstellt_at

  • updated_at

Wir hoffen:

  • Kennwort beim Ausgabe ausblenden;

  • Format erstellt_at als kurze Zeitzeichenfolge;

  • Fügen Sie ein Computer -Eigenschaftsprofil hinzu.

1. Ändern Sie das Benutzermodell, um JsonSserializable zu implementieren

 <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use JsonSerializable;

class User extends Model implements JsonSerializable
{
    // Stapelzuordnungsfelder zulassen(Nach Bedarf)
    protected $fillable = ['name', 'email', 'password'];

    // Felder, die versteckt werden müssen
    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. REGEN Sie JSON im Controller zurück

 <?php

namespace App\Http\Controllers;

use App\Models\User;

class UserController extends Controller
{
    public function show($id)
    {
        $user = User::findOrFail($id);

        // Kehren Sie direkt zum Objekt zurück,Laravel Wird anrufen jsonSerialize Automatische Serialisierung
        return response()->json($user);
    }
}

3. Routing -Konfiguration

 <?php

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

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

4. Beispiel für Betriebsergebnisse

Besuchen Sie http://gitbox.net/user/1 , um zurückzugeben:

 {
    "id": 1,
    "name": "Zhang San",
    "email": "[email protected]",
    "created_at": "2025-05-25 10:30",
    "profile_url": "http://gitbox.net/profile/1"
}

Sie können sehen:

  • Das Feld Passwort ist versteckt;

  • erstellt_at Format verschönert;

  • Profil_url Feld hinzugefügt.


5. Zusammenfassung

  • Mit der JsonSerializable -Schnittstelle können Sie das Verhalten der Modellserialisierung auf JSON vollständig steuern.

  • Es ist sehr bequem in Kombination mit eloquent in Laravel und eine gute Kompatibilität.

  • Geeignet für die API -Ausgangsanpassung, der sensible Datenschutz, die Gleichmäßigkeit der Format und andere Szenarien;

  • In Verbindung mit der Reaktion von Laravel ()-> json () ist es prägnant und intuitiv.

Wenn Sie eine feinere granulare Kontrolle über JSON -Datenstrukturen benötigen, ist JsonSerializable :: Jsonserialize ein unverzichtbares Werkzeug.