Heim > Backend-Entwicklung > Golang > Wie kann ich beim Unmarshalling den gesamten JSON-String an ein Feld einer verschachtelten Struktur übergeben?

Wie kann ich beim Unmarshalling den gesamten JSON-String an ein Feld einer verschachtelten Struktur übergeben?

WBOY
Freigeben: 2024-02-13 10:27:10
nach vorne
1021 Leute haben es durchsucht

如何在解组时将整个 json 字符串传递到嵌套结构的字段?

Wenn wir in PHP den gesamten JSON-String an ein Feld einer verschachtelten Struktur übergeben müssen, gibt es eine einfache Möglichkeit, dies zu tun. Zuerst müssen wir sicherstellen, dass wir den JSON-String in ein PHP-Array oder -Objekt dekodiert haben. Anschließend können wir die Funktion json_encode() verwenden, um das dekodierte Array oder Objekt erneut in einen JSON-String zu kodieren. Als nächstes können wir den codierten JSON-String dem Zielfeld zuweisen. Auf diese Weise haben wir den gesamten JSON-String erfolgreich an die Felder der verschachtelten Struktur übergeben. Dies ist eine einfache, aber effektive Methode, die es uns ermöglicht, JSON-Daten problemlos in PHP zu verarbeiten.

Frageninhalt

Ich muss einen flachen JSON-String entmarshalieren

data := `{"login":"Nickname","password":"some_pass","newPassword":"new_pass"}`
Nach dem Login kopieren

Geben Sie UpdatePasswordRequestverschachtelte Struktur ein:

type SignInRequest struct {
    Login    string `json:"login"`
    Password string `json:"password"`
}

type UpdatePasswordRequest struct {
    NewPassword string        `json:"newPassword"`
    SignInData  SignInRequest `<tag>`
}
Nach dem Login kopieren

Nutze alles Mögliche <tag> 值将 data 解组到 result

var result UpdatePasswordRequest
json.Unmarshal([]byte(data), &result)
Nach dem Login kopieren

gibt leer LoginPassword:

result.SignInData.Login = ""
result.SignInData.Password = ""
Nach dem Login kopieren

Wie muss ich <tag> definieren, um den richtigen Wert für das Feld <tag> 以获得 LoginPassword 字段的正确值?

解决方法

如果您要使用 <tag> zu erhalten?

Problemumgehung

🎜Wenn Sie den Namen <tag> verwenden, sollte Ihr JSON verschachtelt und nicht flach sein, wie folgt: 🎜
data := `{"newPassword":"new_pass", "myTag":{"password":"some_pass", "login":"Nickname"}}`
Nach dem Login kopieren
🎜Wenn Sie Ihren JSON-Code nicht ändern können, sollte er die Struktur (auch .struct-Einbettung genannt) wie folgt zusammensetzen: 🎜
type SignInRequest struct {
    Login    string `json:"login"`
    Password string `json:"password"`
}

type UpdatePasswordRequest struct {
    NewPassword string        `json:"newPassword"`
    SignInRequest
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich beim Unmarshalling den gesamten JSON-String an ein Feld einer verschachtelten Struktur übergeben?. 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