【问题标题】:Handling dynamic JSON schema decoding处理动态 JSON 模式解码
【发布时间】:2021-09-27 16:05:50
【问题描述】:

我有一个 Go HTTP 客户端,它发送/解析 JSON-RPC 请求。

HTTP POST 请求:

[
   {"id":"1", "method":"action1","params":[]},
   {"id":"2", "method":"action2","params":[]},
   ...
   {"id":"X", "method":"actionX","params":[]}
]

HTTP 响应:

[
   {"id":"1", "error":null, "result":{...}},
   {"id":"2", "error":null, "result":{...}},
   ...
   {"id":"X", "error":null, "result":{...}}
]

如何处理 result 键是具有动态架构的对象的那些负载,具体取决于键 id 的值。

【问题讨论】:

    标签: go parsing json-rpc


    【解决方案1】:

    您可以通过将结果解组为 json.RawMessage 来指示 json 库不要解组结果字段,在这种情况下,将响应解组为:

    type result struct{
        ID     string          `json:"id"`
        Err    *string         `json:"error"` // maybe a string?
        Result json.RawMessage `json:"result"`
    }
    

    然后,当您知道您正在处理的 ID 时,您可以将 result.ID 解组到另一个具有您期望的结构的结构中。

    【讨论】:

    • 超级简洁的东西是这种类型只是引擎盖下的一个字节切片type RawMessage []byte
    猜你喜欢
    • 2020-05-04
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多