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

如何使用golang中的jsonrpc包将嵌套映射从服务器发送到客户端?,go,Go,我正在编写一个客户端-服务器go应用程序,它使用yahoo finance api获取实时股票价格。我正在使用jsonrpc包连接客户端和服务器。 我无法将嵌套映射响应从服务器传递到客户端。这是我从客户机文件中提取的小片段。client.go文件 var ( reply map[string]map[int]float64 ) c := jsonrpc.NewClient(client) err = c.Call("JSONResponse.GetSto

我正在编写一个客户端-服务器go应用程序,它使用yahoo finance api获取实时股票价格。我正在使用jsonrpc包连接客户端和服务器。 我无法将嵌套映射响应从服务器传递到客户端。这是我从客户机文件中提取的小片段。client.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)时,它可以正常工作。嵌套映射在服务器上正确显示,但不会在客户端显示。客户端只是继续等待服务器的响应。如果有人能告诉我为什么它不接受嵌套映射,并且对于一个简单的映射效果很好,那将非常有帮助


谢谢:)

jsonrpc
jsonrpc
,因为它使用
json
进行序列化。要封送映射到
json
,需要
string
键类型。如果您在此处打印出
err
,请参阅
err=c.Call(“JSONResponse.GetStockValue”、args和reply)
您应该看到查找对象键字符串开头的原因
无效字符''。

表示对象的键需要是
字符串


或者,如果您使用的JSON是
string
,那么
JSON:cannot unmarshal object to Go value type map[int]float64

我不知道为什么会出现这种情况,但当我将嵌套映射的类型从m[string]map[int]float64更改为map[string]map[string]string时,它对我起到了作用。有人能解释一下原因吗?与此无关,您应该从
GetStockValue()
返回
nestedMap
,而不是更改
reply
的值,这是一个全局变量(糟糕的做法)。