Bagaimanakah saya boleh menghantar keseluruhan rentetan json ke medan struktur bersarang apabila unmarshalling?

WBOY
Lepaskan: 2024-02-13 10:27:10
ke hadapan
984 orang telah melayarinya

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

Dalam PHP, apabila kita perlu menghantar keseluruhan rentetan JSON ke medan struktur bersarang, terdapat cara mudah untuk melakukannya. Pertama, kita perlu memastikan kita telah menyahkod rentetan JSON ke dalam tatasusunan atau objek PHP. Kemudian kita boleh menggunakan fungsi json_encode() untuk mengekod tatasusunan atau objek yang dinyahkodkan ke dalam rentetan JSON sekali lagi. Seterusnya, kita boleh menetapkan rentetan JSON yang dikodkan kepada medan sasaran. Dengan cara ini, kami telah berjaya menghantar keseluruhan rentetan JSON ke medan struktur bersarang. Ini ialah kaedah yang mudah tetapi berkesan yang membolehkan kami memproses data JSON dalam PHP dengan mudah.

Kandungan soalan

Saya perlu membongkar rentetan json yang rata

data := `{"login":"Nickname","password":"some_pass","newPassword":"new_pass"}`
Salin selepas log masuk

Masukkan UpdatePasswordRequeststruktur bersarang:

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

type UpdatePasswordRequest struct {
    NewPassword string        `json:"newPassword"`
    SignInData  SignInRequest `<tag>`
}
Salin selepas log masuk

Gunakan semua yang mungkin <tag> 值将 data 解组到 result

var result UpdatePasswordRequest
json.Unmarshal([]byte(data), &result)
Salin selepas log masuk

memberi kosong LoginPassword:

result.SignInData.Login = ""
result.SignInData.Password = ""
Salin selepas log masuk

Bagaimanakah saya harus mentakrifkan <tag> untuk mendapatkan nilai yang betul untuk medan <tag> 以获得 LoginPassword 字段的正确值?

解决方法

如果您要使用 <tag>?

Penyelesaian

🎜Jika anda akan menggunakan nama <tag>, json anda hendaklah bersarang, bukan rata, seperti ini: 🎜
data := `{"newPassword":"new_pass", "myTag":{"password":"some_pass", "login":"Nickname"}}`
Salin selepas log masuk
🎜Jika anda tidak boleh menukar json anda, ia harus menyusun struktur (aka .struct embedding) seperti ini: 🎜
type SignInRequest struct {
    Login    string `json:"login"`
    Password string `json:"password"`
}

type UpdatePasswordRequest struct {
    NewPassword string        `json:"newPassword"`
    SignInRequest
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh menghantar keseluruhan rentetan json ke medan struktur bersarang apabila unmarshalling?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!