Ich habe dieses struct
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?
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:
Arbeitsbeispiel:
%Vor%Ausgabe:
%Vor%Spielplatz: Ссылка
json.RawMessage
ist wirklich nur ein Stück von Bytes. Sie sollten es direkt in json.Unmarshal
direkt einspeisen können, wie zB:
Auch etwas nicht verwandt, aber json.Unmarshal
kann einen Fehler zurückgeben, und Sie wollen damit umgehen.