Heim  >  Artikel  >  Backend-Entwicklung  >  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
WBOYnach vorne
2024-02-13 10:27:10986Durchsuche

如何在解组时将整个 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"}`

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

Nutze alles Mögliche 8bf259f5a6144433b921fb8b7de94970 值将 data 解组到 result

var result UpdatePasswordRequest
json.Unmarshal([]byte(data), &result)

gibt leer LoginPassword:

result.SignInData.Login = ""
result.SignInData.Password = ""

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

解决方法

如果您要使用 8bf259f5a6144433b921fb8b7de94970 zu erhalten?

Problemumgehung

🎜Wenn Sie den Namen 8bf259f5a6144433b921fb8b7de94970 verwenden, sollte Ihr JSON verschachtelt und nicht flach sein, wie folgt: 🎜
data := `{"newPassword":"new_pass", "myTag":{"password":"some_pass", "login":"Nickname"}}`
🎜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
}

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!

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