Désorganisation des objets JSON imbriqués sous forme de chaînes ou de tableaux d'octets
La désorganisation JSON peut être personnalisée pour gérer les objets imbriqués de manière spécifique. Dans la question, l'objectif est d'analyser un objet JSON, de conserver un objet imbriqué sous forme de chaîne ou de tableau d'octets et d'éviter l'affectation automatique des champs.
Pour y parvenir, le package encoding/json fournit le json.RawMessage taper. Comme décrit dans la documentation, json.RawMessage est un objet JSON encodé brut qui peut être utilisé pour retarder ou précalculer le décodage JSON.
Voici comment utiliser json.RawMessage pour gérer les objets imbriqués dans la chaîne JSON fournie :
package main import ( "encoding/json" "fmt" ) type Bar struct { ID int64 `json:"id"` Foo json.RawMessage `json:"foo"` } func main() { var bar Bar err := json.Unmarshal([]byte(`{ "id": 15, "foo": { "foo": 123, "bar": "baz" } }`), &bar) if err != nil { panic(err) } fmt.Printf("%+v\n", bar) }
Dans ce cas, le champ foo de la structure Bar contiendra les octets JSON bruts représentant le objet, plutôt que de le faire analyser dans une structure Go. Le résultat ressemblera à ceci :
{ID:15 Foo:[123 32 34 102 111 111 34 58 32 49 50 51 44 32 34 98 97 114 34 58 32 34 98 97 122 34 32 125]}
En utilisant json.RawMessage, vous pouvez contrôler la manière dont les objets JSON imbriqués sont gérés lors du démarshalling, ce qui permet plus de flexibilité dans vos pipelines de traitement de données.
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!