Maison > Article > développement back-end > Comment désassembler des données JSON arbitraires avec des structures variables basées sur un « code » ?
Désorganisation des données JSON arbitraires
Question :
Les données JSON peuvent-elles être organisées d'une manière qui permet de le décomposer en parties ou sections ? Dans ce scénario, la moitié supérieure des données définit un « code » qui indique le type de données dans la moitié inférieure, qui peut varier d'une structure à l'autre. Comment cela peut-il être réalisé dans Go ?
Réponse :
Pour désorganiser les données JSON arbitraires où la moitié inférieure peut varier entre les structures, vous pouvez retarder l'analyse de la moitié inférieure jusqu'à ce que le "code" de la moitié supérieure est connu.
Implémentation :
Exemple de code :
<code class="go">package main import ( "encoding/json" "fmt" ) type Message struct { Code int Payload json.RawMessage } type Range struct { Start int End int } type User struct { ID int Pass int } func MyUnmarshall(m []byte) { var message Message var payload interface{} json.Unmarshal(m, &message) switch message.Code { case 3: payload = new(User) case 4: payload = new(Range) } json.Unmarshal(message.Payload, payload) fmt.Printf("\n%v%+v", message.Code, payload) } func main() { json := []byte(`{"Code": 4, "Payload": {"Start": 1, "End": 10}}`) MyUnmarshall(json) json = []byte(`{"Code": 3, "Payload": {"ID": 1, "Pass": 1234}}`) MyUnmarshall(json) }</code>
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!