Deserialize eine Entität mit einer Beziehung mit Symfony Serializer Component

8

Ich versuche eine Entity mit einer Beziehung zu deserialisieren, indem ich die Symfony Serializer Komponente verwende. Das ist meine Einheit:

%Vor%

Und die Genreentität :

%Vor%

In meiner Controller-Aktion versuche ich das gerade:

%Vor%

Und meine json Daten :

%Vor%

Aber ich habe den nächsten Fehler :

  

Erwartetes Argument des Typs "AppBundle \ Entity \ Genre", "Array" angegeben (500   Interner Serverfehler)

Ist es möglich, eine JSON-Anfrage mit einer Entität mit Relationen innerhalb deserial zu machen?

Vielen Dank im Advance.

    
dacuna 10.06.2016, 06:21
quelle

3 Antworten

5

Ja und nein. Zunächst sollten Sie keine neue Instanz des Serializers in Ihrem Controller neu erstellen, sondern stattdessen den Dienst serializer verwenden.

Zweitens, nein, es ist nicht möglich, Symfony Serializer zu verwenden. Wir machen es in Ссылка , aber dort ist ein bisschen Magie. Dennoch wurde eine Pressearbeit gemacht, um es zu unterstützen: Ссылка

    
Théo 18.07.2016, 01:47
quelle
1

Es funktioniert jetzt. Sie müssen property_info in config.yml:

aktivieren %Vor%     
slk500 28.04.2017 18:16
quelle
0

Dies nennt die Symfony-Dokumentation " Rekursive Denormalisierung ", beginnend mit der Version 3.3 bis zur tatsächlicher Master, 4.0.

Damit Symfony die Eigenschaftstypen der serialisierten Objekte finden kann, muss es die PropertyInfo-Komponente verwenden, die, wie @ slk500 in seiner Antwort angegeben hat, im Framework-Konfiguration .

Wenn Sie also das vollständige Framework verwenden, müssen Sie nur die folgenden Schritte ausführen, um verschachtelte JSON-Objekte zu deserialisieren:

1. Aktivieren Sie den Serializer und die Eigenschafteninformationskomponenten in config.yml:

%Vor%
  1. Dann injizieren Sie den Serializer wo immer Sie ihn brauchen:
%Vor%

Die Standardfunktionen dieser Komponenten waren genug für meine Bedürfnisse.
Autowiring kümmert sich um die grundlegende Service-Deklaration. Wenn Sie also keine speziellen Normalizer benötigen, müssen Sie nicht einmal die Konfigurationsdatei services.yml bearbeiten. Abhängig von Ihren Anwendungsfällen müssen Sie möglicherweise bestimmte Funktionen aktivieren. Überprüfen Sie die Dokumentation zu Serializer und PropertyInfo für (hoffentlich) spezifischere Anwendungsfälle.

    
Victor Toulouse 17.10.2017 11:20
quelle