为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
素胚勾勒不出你 2021-11-08 18:56:47
我正在编写一个客户端服务器 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 这样的简单地图时,它可以正常工作。嵌套地图在服务器上正确显示,但不会在客户端显示。客户端只是继续等待服务器的响应。如果有人可以指导我为什么它不接受嵌套地图并且对简单地图工作正常,那将非常有帮助?谢谢 :)
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-11-08
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

如果您打印出您的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


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信