Maison  >  Article  >  développement back-end  >  Comment analyser différents types de tables JSON-RPC

Comment analyser différents types de tables JSON-RPC

WBOY
WBOYavant
2024-02-14 19:42:101208parcourir

Comment analyser différents types de tables JSON-RPC

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.

Contenu de la question

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>]

Solution

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer