Was ist der richtige Weg, um eine json.RawMessage in eine Struktur zu konvertieren?

8

Ich habe dieses struct

%Vor%

Ich frage jetzt einige json Daten von ElasticSearch ab. Source hat den Typ json.RawMessage . Ich will nur source auf meine SyncInfo abbilden, für die ich die Variable mySyncInfo erstellt habe.

Ich habe sogar herausgefunden, wie das geht ... aber es scheint komisch. Ich rufe zuerst MarshalJSON() an, um ein []byte zu erhalten, und füttere dann json.Unmarshal() , was ein []byte und einen Zeiger auf meine Struktur erfordert.

Das funktioniert gut, aber es fühlt sich an, als würde ich einen extra Hop machen. Fehle ich etwas oder ist das der beabsichtigte Weg, von einem json.RawMessage zu einem struct zu kommen?

%Vor%     
Christoph 23.04.2014, 21:24
quelle

2 Antworten

13

Wie bereits erwähnt, ist der zugrunde liegende Typ von json.RawMessage []byte , so dass Sie ein json.RawMessage als Datenparameter für json.Unmarshal verwenden können.

Ihr Problem besteht jedoch darin, dass Sie einen Zeiger ( *json.RawMessage ) und keinen Wert haben. Sie müssen es nur dereferenzieren:

%Vor%

Arbeitsbeispiel:

%Vor%

Ausgabe:

%Vor%

Spielplatz: Ссылка

    
ANisus 23.04.2014, 22:49
quelle
2

json.RawMessage ist wirklich nur ein Stück von Bytes. Sie sollten es direkt in json.Unmarshal direkt einspeisen können, wie zB:

%Vor%

Auch etwas nicht verwandt, aber json.Unmarshal kann einen Fehler zurückgeben, und Sie wollen damit umgehen.

%Vor%     
Zach Latta 23.04.2014 22:06
quelle

Tags und Links