golang: JSON-Arrays, die auch Methoden haben

WBOY
Freigeben: 2024-02-09 10:15:18
nach vorne
1224 Leute haben es durchsucht

golang:也有方法的 json 数组

Der PHP-Editor Youzi bringt Ihnen einen Artikel über Golang mit dem Thema „Golang: JSON-Arrays, die auch Methoden haben“. Golang ist eine einfache und effiziente Programmiersprache und JSON-Array ist eines der am häufigsten verwendeten Datenformate. In diesem Artikel wird untersucht, wie JSON-Arrays in Golang bearbeitet werden, und es werden einige nützliche Methoden vorgestellt. Ganz gleich, ob Sie Anfänger oder erfahrener Entwickler sind, dieser Artikel kann Ihnen einige wertvolle Informationen und Tipps liefern. Finden wir es gemeinsam heraus!

Frageninhalt

Ich habe eine Datenstruktur wie diese:

type (
  parent struct {
    items []*child
  }
  child struct {
    field string `json:"field"`
  }
)
Nach dem Login kopieren

Ich hoffe auch parent, dass es einen Weg gibt:

func (p *parent) example() { }
Nach dem Login kopieren

Aber die JSON-Anforderung ist, dass das übergeordnete Element nur ein Array ist:

[
  {
    "field": "data"
  }
]
Nach dem Login kopieren

Ich möchte, dass parent 是一个简单的数组,但为了让 parent ein einfaches Array ist, aber damit

Methoden hat, darf es kein Array-Typ sein.

Gibt es eine Möglichkeit, diese beiden Probleme mit einer Datenstruktur zu lösen?

greatgrandparent包含[]grandparent,而grandparent有一个包含parentparent(Um die Sache noch komplizierter zu machen, besteht die tatsächliche Datenstruktur, die ich verwenden muss, aus zwei Ebenen: greatgrandparent enthält []grandparent und grandparent Dort ist ein

, das

enthält. Das Array wird extern definiert und ich möchte, dass jede der vier Strukturen Methoden hat.)

Problemumgehung

Damit das übergeordnete Element Methoden hat, darf es kein Array-Typ sein. Das ist möglich, es muss nur einen

Namen

haben, da nur benannte Typen (oder Zeiger auf benannte Typen) Methoden implementieren können. Hier ist der gültige Go-Code:

type parent []*child

func (p parent) example() { /* ... */ }
Nach dem Login kopieren
parentBeachten Sie, dass das obige

ein Slice und kein Array ist. Arrays in go haben eine statische Länge, Sie können sie nicht vergrößern oder verkleinern, Slices hingegen haben eine dynamische Länge, Sie können ihre Größe nach Belieben ändern. Arrays und Slices sind eng miteinander verbunden, aber nicht gleich.

json.unmarshaler/json.marshaler

Eine andere Möglichkeit besteht darin, den Strukturtyp die

-Schnittstelle implementieren zu lassen:

type parent struct { Items []*child }

func (p *parent) UnmarshalJSON(data []byte) error {
    return json.Unmarshal(data, &p.Items)
}

func (p parent) MarshalJSON() ([]byte, error) {
    return json.Marshal(p.Items)
}
Nach dem Login kopieren
🎜Das Obige generiert die erforderliche JSON-Struktur. 🎜

Das obige ist der detaillierte Inhalt vongolang: JSON-Arrays, die auch Methoden haben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!