Heim >Backend-Entwicklung >Golang >Golang: Nur ein Objekt in der JSON-Sammlungsantwort abrufen

Golang: Nur ein Objekt in der JSON-Sammlungsantwort abrufen

WBOY
WBOYnach vorne
2024-02-15 12:54:09390Durchsuche

Golang:在 JSON 集合响应中仅获取一个对象

php-Editor Banana bietet Ihnen eine Einführung in die Fähigkeit von Golang, nur ein Objekt in einer JSON-Sammlungsantwort abzurufen. Bei der Verarbeitung von JSON-Daten müssen wir manchmal nur eines der Objekte statt der gesamten Sammlung abrufen. In diesem Fall können wir einige einfache Methoden verwenden, um dies zu erreichen. In diesem Artikel erfahren Sie im Detail, wie Sie mit Golang diese Anforderung erfüllen und JSON-Daten flexibler verarbeiten können. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, in diesem Artikel erhalten Sie praktische Tipps und Methoden. Lasst uns gemeinsam erkunden!

Frageninhalt

Angenommen, ich habe einen JSON-Antworttext wie diesen:

{
   value: [{object a's key-values}, {object b's key-values}, {object c's key-values} ...]
}

Wobei die Objekte a, b, c unterschiedliche Strukturen haben, obwohl sie möglicherweise dieselben Schlüsselnamen haben. (z. B. können sowohl obj a als auch b den Schlüssel „b“ haben, aber nur obj a hat den Schlüssel „a“) ​​

Mich interessiert nur das Objekt a in der JSON-Antwort, der Rest kann verworfen werden. Wenn ich eine Struktur wie diese habe:

type MyObject struct{
    a string
    b string
}

type MyData struct{
   value []MyObject
}

Funktioniert das Unmarshaling der Antwort in mydata? Können wir einen bestimmten Slice-Typ angeben, sodass nur die erforderlichen Elemente mit der richtigen Struktur nicht gemarshallt werden und die restlichen Objekte in der JSON-Sammlung ignoriert werden?

Lösung

Erstens: Sie müssen die Strukturmitglieder exportieren:

type myobject struct{
    a string `json:"a"`
    b string `json:"b"`
}
type mydata struct{
   value []myobject `json:"value"`
}

Sie können das Array dann entmarshalieren mit:

var v mydata
json.unmarshal(input,&v)

Dadurch wird für jedes Array-Element in der Eingabe ein myobject 实例,但只有那些具有 ab 字段的元素才会被填充。因此,您可以过滤包含 a erstellt:

for _,x:=range v.Values {
   if x.A!="" {
     ///
   }
}

Das obige ist der detaillierte Inhalt vonGolang: Nur ein Objekt in der JSON-Sammlungsantwort abrufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen