json - 如何反序列化混合类型的列表?

标签 json go

<分区>

我将如何在 Go 中反序列化此 JSON?

{
  "using": [ "jmap-core", "jmap-mail" ],
  "methodCalls": [
    ["method1", {"arg1": "arg1data", "arg2": "arg2data"}, "#1"],
    ["method2", {"arg1": "arg1data"}, "#2"],
    ["method3", {}, "#3"]
  ]
}

我还没有想出如何正确地让 json 模块将 methodCalls 解析为一个类型。我的第一个想法是

type MethodCall struct {
    Name string
    Params map[string]string
    ClientId string
}

然后将其用作列表类型:

type Request struct {
    Using []string
    MethodCalls []MethodCall
}

但这行不通。 :using"被正确解析,但 "methocCalls"不是。有没有办法让 Go 将这个 JSON 解析为我的类型?

最佳答案

您尝试反序列化的 methodCalls 看起来像是一个字符串数组,而不是 MethodCall 的结构。 所以,看看这个 link我正在反序列化为数组。

如果你想使用 MethodCall 结构,你必须稍微改变一下 json。看看这个link

关于json - 如何反序列化混合类型的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49486607/

相关文章:

java - 如何使用 Jackson 将 JSON 解析为带有小写键的 Map?

json - JSON 架构中有效值的动态列表

google-app-engine - 在 golang 中将字符串转换为 json,反之亦然?

go - 如何在 GO 中处理全局状态

http - 如何通过Postman在go lang中处理GET操作(CRUD)?

javascript - npm install -SE 带有次要版本符号

javascript - 将 JSON 反序列化为 JAVASCRIPT 对象

json - 将 JSON 数据拉入 R

html - beego,找不到重新定义的页面,404页面不显示html,为什么?

go - 关于 "cannot use time.Now() (type time.Time) as type "