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

标签 go

我正在编写一个客户端服务器 go 应用程序,它使用 yahoo finance api 来获取实时股票价格。我正在使用 jsonrpc 包来连接客户端和服务器。 我无法将嵌套的 map 响应从服务器传递到客户端。这是我来自客户端文件的小片段。 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 更改为像 map[string]int 这样的简单 map 时,它可以正常工作。嵌套 map 在服务器端正确显示,但未在客户端显示。客户端只是继续等待服务器的响应。如果有人可以指导我为什么它不接受嵌套 map 并且对简单 map 工作正常,那将非常有帮助?

谢谢:)

最佳答案

jsonrpcjson rpc 因为它使用 json 进行序列化。要将映射编码为 json,您需要 string 键类型。引用encoding/json

关于go - 如何使用 golang 中的 jsonrpc 包将嵌套映射从服务器发送到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32817327/

相关文章:

select - Go 中的 channel 阻塞是如何工作的?

http - 发出自定义发布请求时出现 400 Bad Request

gcc - "go get"不只是获取文件然后 cgo +"go build"它们吗?显然不是

go - 什么是 channel 缓冲区大小?

string - 检查多个字符串是否为空的优雅方法

amazon-web-services - EC2 上的 S3 与 IAM : Error NoCredentialProviders: no valid providers in chain. 已弃用

Golang protobufs 有名称冲突

go - 如何使 Go 将枚举字段打印为字符串?

api - 正确的媒体类型适用于下载zip文件的swagger规范

windows - 尝试使用 pkg-config 但它不是注册命令