Heim  >  Artikel  >  Backend-Entwicklung  >  So analysieren Sie verschiedene Arten von JSON-RPC-Tabellen

So analysieren Sie verschiedene Arten von JSON-RPC-Tabellen

WBOY
WBOYnach vorne
2024-02-14 19:42:101208Durchsuche

So analysieren Sie verschiedene Arten von JSON-RPC-Tabellen

php-Editor Baicao stellt Ihnen vor, wie Sie verschiedene Arten von JSON-RPC-Tabellen analysieren. JSON-RPC ist ein leichtes Remote-Prozeduraufrufprotokoll, das in verschiedenen Webdiensten weit verbreitet ist. Beim Parsen von JSON-RPC-Tabellen müssen wir auf verschiedene Arten von Tabellenstrukturen und Datenformaten achten, um sicherzustellen, dass die Daten korrekt analysiert und verarbeitet werden. In diesem Artikel werden gängige JSON-RPC-Tabellentypen, einschließlich Einzeltabellen, verschachtelte Tabellen und Array-Tabellen, sowie entsprechende Analysemethoden und Vorsichtsmaßnahmen vorgestellt. Durch das Verständnis der verschiedenen Arten der JSON-RPC-Tabellenanalyse können wir Daten besser verarbeiten und nutzen und die Zuverlässigkeit und Effizienz unserer Programme verbessern.

Frageninhalt

Ich möchte die Informationen in einer JSON-RPC-Datei mit der folgenden Struktur erhalten:

{
    "id": "foo1",
    "error": null,
    "result": [
        {
            "key": [
                "hello 1",
                1,
                "world 1"
            ],
            "val": {
                "type": "static"
            }
        },
        {
            "key": [
                "hello 2",
                1,
                "world 2"
            ],
            "val": {
                "type": "static"
            }
        }
    ]
}

Dies ist meine Parsing-Funktion, der Schlüssel ist eine String-Tabelle (int-Typ kann nicht akzeptiert werden):

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)
}

Wie analysiere ich die „Schlüssel“-Tabelle? ...das Problem ist, dass es verschiedene Typen gibt

Die wichtigste Tabellenstruktur ist:

[ <string>, <int>, <string>]

Lösung

Um Arrays unterschiedlicher Typen in go zu entmarshalieren und auf den Typ zuzugreifen, müssen Sie Schnittstellen und Typzusicherungen verwenden.

Das könnte für Sie funktionieren:

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)
}

Nachdem Sie die drei Schnittstellen ihren Typen zugeordnet haben, können Sie sie entsprechend Ihrem Anwendungsfall weiter verwenden.

Das obige ist der detaillierte Inhalt vonSo analysieren Sie verschiedene Arten von JSON-RPC-Tabellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen