editor php Yuzai akan memperkenalkan anda cara menambah rentetan json yang sah pada objek. Semasa proses pembangunan, kita selalunya perlu menukar data ke dalam format json dan menghantarnya ke bahagian hadapan atau sistem lain. Walau bagaimanapun, kadangkala kita perlu menambah data baharu pada objek json sedia ada, yang memerlukan kita menghuraikan, mengendalikan dan menyambung rentetan json. Dalam artikel ini, kami akan memperkenalkan kaedah yang mudah dan berkesan untuk melaksanakan fungsi ini untuk membantu anda memproses data json dengan lebih baik.
Saya pada masa ini mempunyai sesuatu seperti ini
type info struct { ids []string `json:"ids"` assignment string `json:"assignment"` }
Sekarang assignment
saya ialah rentetan json berkod keras yang besar dibaca daripada fail.
Saya sedang melakukan sesuatu seperti ini
r := Info{Ids: names, assignment: existingJsonString} body, _ := json.Marshal(r)
Tetapi body
di atas tidak betul kerana tugasan muncul sebagai rentetan dan bukannya objek json. Bagaimanakah cara saya memberitahu struktur maklumat body
是不正确的,因为赋值显示为字符串而不是 json 对象。我如何告诉信息结构 assignment
将是一个 json 字符串而不是常规字符串,以便 json.marshal
可以很好地使用它?
使用类型json.rawmessage,请注意应导出 assignment
sebagai rentetan json dan bukannya rentetan biasa supaya json.marshal
boleh berfungsi dengan baik dengannya?
Penyelesaian
🎜Gunakan jenis json.rawmessage, sila ambil perhatian bahawa ia harus dieksport 🎜 🎜type info struct { ids []string `json:"ids"` assignment json.rawmessage `json:"assignment"` }
package main import ( "encoding/json" "fmt" ) type Info struct { Ids []string `json:"ids"` Assignment json.RawMessage `json:"assignment"` } func main() { r := Info{ Ids: []string{"id1", "id2"}, Assignment: json.RawMessage(`{"a":1,"b":"str"}`), } body, err := json.Marshal(r) if err != nil { panic(err) } fmt.Printf("%s\n", body) }
Atas ialah kandungan terperinci Bagaimana untuk menambah rentetan json yang sah ke objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!