Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entmarshaliere ich JSON mit unterschiedlichen Antwortformaten in Go?

Wie entmarshaliere ich JSON mit unterschiedlichen Antwortformaten in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 10:00:30662Durchsuche

How to Unmarshal JSON with Varying Response Formats in Go?

Unmarshalling von JSON mit unterschiedlichen Antwortformaten in Go

Beim Konsumieren externer Endpunkte können Sie auf JSON-Antworten mit unterschiedlichen Formaten stoßen. Der Umgang mit diesen Variationen kann eine Herausforderung sein, insbesondere wenn Sie Ihre Antwort in einen bestimmten Datentyp strukturieren möchten.

Das Dilemma

Sie stehen vor einem Endpunkt, der JSON zurückgibt in zwei Formaten:

  • Format 1: { "message": "Message" }
  • Format 2: { "message": ["ERROR_CODE"] }

Die Herausforderung besteht darin, eine Go-Struktur zu erstellen, die beide Antwortformate unterstützt.

Ein einfacher Ansatz

Zunächst haben Sie über die Verwendung von zwei separaten Strukturen nachgedacht, einer für jedes Format. Dieser Ansatz ist jedoch nicht ideal, da er mehrere Dekodierungsversuche und Fehlerbehandlung erfordert.

Eine elegantere Lösung

Eine elegantere Lösung besteht darin, den JSON in eine Schnittstelle zu entmarshallen {} Typ. Interface{} ist ein spezieller Typ in Go, der jeden Wert enthalten kann, unabhängig von seinem spezifischen Typ.

<code class="go">type Response struct {
    Message interface{} `json:"message"`
}</code>

Nach dem Demarshalling können Sie eine Typzusicherung oder einen Typschalter verwenden, um den Typ des Nachrichtenfelds zu überprüfen .

<code class="go">switch x := r.Message.(type) {
    case string:
        // Handle string message
    case []interface{}:
        // Handle array message
    default:
        // Handle unexpected type
}</code>

Mit diesem Ansatz können Sie beide Antwortformate in einer einzigen Struktur verarbeiten und so eine robustere und wartbarere Lösung bereitstellen.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich JSON mit unterschiedlichen Antwortformaten in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn