Heim > Backend-Entwicklung > Golang > Wie verwende ich nicht erforderliche JSON-Parameter in Go?

Wie verwende ich nicht erforderliche JSON-Parameter in Go?

王林
Freigeben: 2024-02-12 09:10:08
nach vorne
1009 Leute haben es durchsucht

如何在 Go 中使用非必需的 JSON 参数?

php-Editor Yuzai gibt Ihnen Tipps zur Verwendung nicht erforderlicher JSON-Parameter in der Go-Sprache. Beim Schreiben von Go-Programmen müssen wir häufig JSON-Daten verarbeiten. Manchmal müssen wir möglicherweise nur einige der Parameter verwenden, aber nicht alle. In diesem Artikel erfahren Sie, wie Sie nicht erforderliche JSON-Parameter in Go verwenden, um JSON-Daten flexibler zu verarbeiten und die Lesbarkeit und Wartbarkeit Ihres Codes zu verbessern. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, erhalten Sie in diesem Artikel nützliche Tipps und Beispielcode, die Ihnen helfen, diese Funktion besser zu verstehen und anzuwenden. Lasst uns gemeinsam erkunden!

Frageninhalt

Hallo, ich entwickle die Rest-API in Go und möchte, dass der Benutzer JSON-Parameter übergibt:

Offset int64  `json:"offset"`
Limit  int64  `json:"limit"`
SortBy string `json:"sortby"`
Asc    bool   `json:"asc"`
Username   string `json:"username"`
First_Name string `json:"first_name"`
Last_Name  string `json:"last_name"`
Status     string `json:"status"`
Nach dem Login kopieren

Aber sie sind nicht immer erforderlich, zum Beispiel kann der Benutzer einfach Offset übergeben und die anderen ignorieren. Er kann sogar 0 Parameter senden. Wie kann ich das machen? Offset 并忽略其他。他甚至可以发送0个参数。我怎样才能做到这一点?

解决方法

从 JSON 文本中解组值时,jsonProblemumgehung

Beim Unmarshalling von Werten aus JSON-Text müssen im

-Paket nicht alle Felder angezeigt werden JSON gibt es keine Garantie dafür, dass alle JSON-Felder über passende Go-Felder verfügen. json Es gibt also nichts Besonderes für Sie, organisieren Sie einfach das, was Sie haben, in Go-Werten für das, was Sie wollen oder wollen könnten.

Zu beachten ist, dass das

-Paket das entsprechende Go-Feld nicht ändert, wenn ein Feld im JSON-Text fehlt. Wenn es also mit „frisch“ beginnt, string 类型的 SortBy 字段,如果 JSON 中缺少该字段,它将保留空 string: ""Nullwert

, behält das Feld den Nullwert von bei seine Art.

string 将是有效的 SortBy 值,您可以将此字段声明为指针:*string。在这种情况下,如果 JSON 文本中缺少它,它将保留 nilIn den meisten Fällen reicht dies aus, um festzustellen, ob ein Feld (in JSON) vorhanden ist, beispielsweise wenn Sie in einer Go-Struktur ein

.

haben

Wenn ein Nullwert nützlich und gültig ist, können Sie zur Verwendung von Zeigern übergehen. Wenn in Ihrer Anwendung beispielsweise null

verwendet wird, d. h. der Nullwert eines beliebigen Zeigertyps. Sehen Sie sich dieses Beispiel an:

type Data struct {
    I int
    S string
    P *string
}

func main() {
    var d Data
    var err error

    d, err = Data{}, nil
    err = json.Unmarshal([]byte(`{"I":1, "S":"sv", "P":"pv"}`), &d)
    fmt.Printf("%#v %v\n", d, err)

    d, err = Data{}, nil
    err = json.Unmarshal([]byte(`{"I":1}`), &d)
    fmt.Printf("%#v %v\n", d, err)

    d, err = Data{}, nil
    err = json.Unmarshal([]byte(`{"S":"abc"}`), &d)
    fmt.Printf("%#v %v\n", d, err)
}
Nach dem Login kopieren
🎜Ausgabe (versuchen Sie es auf 🎜Go Playground🎜): 🎜
main.Data{I:1, S:"sv", P:(*string)(0x1050a150)} <nil>
main.Data{I:1, S:"", P:(*string)(nil)} <nil>
main.Data{I:0, S:"abc", P:(*string)(nil)} <nil>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie verwende ich nicht erforderliche JSON-Parameter in Go?. 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