猿问

如何使用golang中的jsonrpc包将嵌套映射从服务器发送到客户端?

我正在编写一个客户端服务器 go 应用程序,它使用雅虎金融 api 来获取实时股票价格。我正在使用 jsonrpc 包来连接客户端和服务器。我无法将嵌套地图响应从服务器传递到客户端。这是我来自客户端文件的小片段。客户端.go文件


var (

        reply map[string]map[int]float64

    )


    c := jsonrpc.NewClient(client)

    err = c.Call("JSONResponse.GetStockValue", args, &reply)

    fmt.Println(reply)

服务器文件如下所示:


func (j *JSONResponse) GetStockValue(args *ClientRequest, reply *map[string]map[int]float64) error {

 some piece of code......

 nestedMap := make(map[string]map[int]float64)

 add some values in nested map .....

 fmt.Println(nestedMap)

 *reply = nestedMap

  return nil

}

这不会向客户端发送任何响应。当我将嵌套地图更改为像 map[string]int 这样的简单地图时,它可以正常工作。嵌套地图在服务器上正确显示,但不会在客户端显示。客户端只是继续等待服务器的响应。如果有人可以指导我为什么它不接受嵌套地图并且对简单地图工作正常,那将非常有帮助?


谢谢 :)


素胚勾勒不出你
浏览 179回答 2
2回答

胡子哥哥

jsonrpc是json rpc因为它json用于序列化。要将地图编组到json,您需要string密钥类型。参考编码/json

收到一只叮咚

如果您打印出您的err此处,err = c.Call("JSONResponse.GetStockValue", args, &reply)您应该会看到原因invalid character '' looking for beginning of object key string.的JSON规范说对象的关键需求是string。或者,如果您正在使用 JSON string,则json: cannot unmarshal object into Go value of type map[int]float64
随时随地看视频慕课网APP

相关分类

Go
我要回答