Maison > Article > développement back-end > Comment ajouter une chaîne JSON valide à un objet
L'éditeur php Yuzai vous présentera comment ajouter une chaîne json valide à un objet. Pendant le processus de développement, nous devons souvent convertir les données au format json et les transmettre au front-end ou à d'autres systèmes. Cependant, nous devons parfois ajouter de nouvelles données à un objet json existant, ce qui nous oblige à analyser, exploiter et épisser des chaînes json. Dans cet article, nous présenterons une méthode simple et efficace pour implémenter cette fonction afin de vous aider à mieux traiter les données json.
J'ai actuellement quelque chose comme ça
type info struct { ids []string `json:"ids"` assignment string `json:"assignment"` }
À l'heure actuelle, mon assignment
est une grande chaîne JSON codée en dur lue à partir d'un fichier.
Je fais quelque chose comme ça
r := Info{Ids: names, assignment: existingJsonString} body, _ := json.Marshal(r)
Mais le body
ci-dessus est incorrect car l'affectation apparaît sous la forme d'une chaîne au lieu d'un objet json. Comment puis-je dire à la structure d'information body
是不正确的,因为赋值显示为字符串而不是 json 对象。我如何告诉信息结构 assignment
将是一个 json 字符串而不是常规字符串,以便 json.marshal
可以很好地使用它?
使用类型json.rawmessage,请注意应导出 assignment
d'être une chaîne json au lieu d'une chaîne normale afin que json.marshal
puisse bien fonctionner avec elle ?
Solution
🎜Utilisez le type json.rawmessage, veuillez noter qu'il doit être exporté 🎜 : 🎜type info struct { ids []string `json:"ids"` assignment json.rawmessage `json:"assignment"` }🎜Exemple : 🎜
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) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!