Heim  >  Artikel  >  Backend-Entwicklung  >  golang: JSON-Arrays, die auch Methoden haben

golang: JSON-Arrays, die auch Methoden haben

WBOY
WBOYnach vorne
2024-02-09 10:15:181224Durchsuche

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"`
  }
)

Ich hoffe auch parent, dass es einen Weg gibt:

func (p *parent) example() { }

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

[
  {
    "field": "data"
  }
]

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() { /* ... */ }
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)
}
🎜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!

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