首页 > 解决方案 > 当我使用 gorilla/rpc/json 时如何为参数设置空值?

问题描述

我尝试向 RPC 接口发送请求,但该接口不需要参数。它的意思是params字段应该是"params":[],但是当我使用时json.EncodeClientRequest(method string, args interface{}),params的值总是"params":[{}]"params":[null]。所以它总是会导致错误:map[code:-32602 message:Invalid method parameters]. 我如何为参数设置一个空值。接下来是我的请求结构:

// request struct
type JsonRpcReq struct {
    Id      uint32       `json:"id"`
    Url     string       `json:"url"`
    Method  string       `json:"method"`
    Params  *interface{} `json:"params"`
    JsonRpc string       `json:"jsonrpc"`
}

句子的错误是:

// request method
func (r *JsonRpcReq) Send() (interface{}, error) {
    message, err := json.EncodeClientRequest(r.Method, r.Params)
    fmt.Println(string(message))
    if err != nil {
        return nil, err
    }
    ...
}

请求语句是:

req := NewJsonRpcReq("http://finance.test.cppp.com/rpc/healthCheck", "status", nil)

NewJsonRpcReq方法是:

func NewJsonRpcReq(url, method string, params *interface{}) *JsonRpcReq {
    return &JsonRpcReq{Id: 0, Url: url, Method: method, Params: params, JsonRpc: "2.0"}
}

标签: gojson-rpcgorilla

解决方案


推荐阅读