l'éditeur php Baicao vous présente comment analyser différents types de tables JSON-RPC. JSON-RPC est un protocole léger d’appel de procédure à distance largement utilisé dans divers services Web. Lors de l'analyse des tables JSON-RPC, nous devons prêter attention aux différents types de structures de tables et de formats de données pour garantir que les données sont analysées et traitées correctement. Cet article présentera les types de tables JSON-RPC courants, notamment les tables simples, les tables imbriquées et les tables matricielles, ainsi que les méthodes d'analyse et les précautions correspondantes. En comprenant les différents types d'analyse de tables JSON-RPC, nous pouvons mieux traiter et utiliser les données et améliorer la fiabilité et l'efficacité de nos programmes.
Je souhaite obtenir les informations dans un fichier json-rpc avec la structure suivante :
{ "id": "foo1", "error": null, "result": [ { "key": [ "hello 1", 1, "world 1" ], "val": { "type": "static" } }, { "key": [ "hello 2", 1, "world 2" ], "val": { "type": "static" } } ] }
C'est ma fonction d'analyse, la clé est une table de chaînes (le type int ne peut pas être accepté) :
type jsonrpcrsp struct { id string `json:"id"` error *string `json:"error"` result json.rawmessage `json:"result"` } type jsonrpcentry_val struct { type string `json:"type"` } type jsonrpcentry struct { key [3]string `json:"key"` val jsonrpcentry_val `json:"val"` } jsonresult := jsonrpcrsp{} json.unmarshal(data, &jsonresult) entries := []jsonrpcentry{} for _, val := range jsonresult { json.unmarshal(val.result, &entries) }
Comment analyser la table « clé » ? ...le problème c'est qu'il en existe différents types
La structure clé du tableau est :
[ <string>, <int>, <string>]
Pour désassembler des tableaux de différents types en go, si vous avez besoin d'accéder au type, vous devez utiliser des interfaces et des assertions de type.
Cela pourrait fonctionner pour vous :
type Result struct { Key [3]interface{} `json:"key"` Val struct { Type string `json:"type"` } `json:"val"` } msg := JsonRpcRsp{} json.Unmarshal(data, &msg) var result []Result json.Unmarshal(msg.Result, &result) for _, v := range result { key1 := v.Key[0].(string) key2 := v.Key[1].(float64) key3 := v.Key[2].(string) fmt.Println(key1, key2, key3) }
Après avoir défini les trois interfaces selon leurs types, vous pouvez les utiliser davantage en fonction de votre cas d'utilisation.
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!