Umgang mit mehreren JSON-Formaten mit Unmarshaling in Go
Die Nutzung einer Drittanbieter-API, die JSON in verschiedenen Formaten zurückgibt, kann eine Herausforderung darstellen um mit den unterschiedlichen Strukturen in Go umzugehen. Eine häufige Herausforderung besteht darin, mit Antworten umzugehen, die entweder eine Zeichenfolge oder ein Array in einem „Nachrichten“-Feld enthalten können.
Ein einfacher Ansatz
Ein grundlegender Ansatz würde das Erstellen umfassen separate Strukturen für jedes Format:
<code class="go">type ResponseWithString struct { Message string `json:"message"` } type ResponseWithArray struct { Message []string `json:"message"` }</code>
Sie können dann versuchen, den JSON nacheinander in beide Strukturen zu dekodieren. Wenn der erste Versuch (mit String) fehlschlägt, versuchen Sie es mit dem zweiten Versuch (mit Array).
Eine elegantere Lösung
Ein eleganterer Ansatz ist die Verwendung der Typ interface{}, der jede Art von Wert enthalten kann. Durch das Unmarshalling des JSON in eine Variable vom Typ interface{} können Sie seinen Typ dynamisch überprüfen und entsprechend reagieren.
<code class="go">type Response struct { Message interface{} `json:"message"` } func main() { ... var r Response ... switch x := r.Message.(type) { case string: // Handle string message case []interface{}: // Handle array message } }</code>
Beachten Sie, dass JSON-Arrays standardmäßig in []interface{} entmarshallt werden, also Sie kann Typzusicherungen verwenden, um zwischen einer Zeichenfolge und einem Array zu unterscheiden.
Dieser Ansatz bietet mehr Flexibilität und Wiederverwendbarkeit des Codes, da Sie mehrere JSON-Formate mit einer einzigen Struktur verarbeiten können.
Das obige ist der detaillierte Inhalt vonWie gehen Sie beim Unmarshaling mit mehreren JSON-Formaten in Go um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!