Golang: Nur ein Objekt in der JSON-Sammlungsantwort abrufen

WBOY
Freigeben: 2024-02-15 12:54:09
nach vorne
386 Leute haben es durchsucht

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} ...]
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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"`
}
Nach dem Login kopieren

Sie können das Array dann entmarshalieren mit:

var v mydata
json.unmarshal(input,&v)
Nach dem Login kopieren

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

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

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!

Quelle:stackoverflow.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage