gpt4 book ai didi

json - 如何用 Go 结构体来表示这个复杂的数据结构?

转载 作者:IT王子 更新时间:2023-10-29 01:23:21 25 4
gpt4 key购买 nike

所以我决定再给 Go 一次机会,但被卡住了。文档中的大多数 Go 结构示例都非常简单,我发现了以下我不知道如何用 Go 结构表示的 JSON 对象表示法:

{
id: 1,
version: "1.0",
method: "someString",
params: [
{
clientid: "string",
nickname: "string",
level: "string"
},
[{
value: "string",
"function": "string"
}]
]
}

作为更有经验的 gophers,你们如何在 Go 中表示有点奇怪的数据?以及如何初始化结果结构的嵌套元素?

最佳答案

我会为 params 属性使用一个 json.RawMessage slice 。然后将它们隐藏在一个 GetXXX 方法后面,该方法可以很好地解码它.有点像这样:

type Outer struct {
Id int `json:"id"`
Version string `json:"version"`
Method string `json:"method"`
Params []json.RawMessage `json:"params"`
}

type Client struct {
ClientId string `json:"clientid"`
Nickname string `json:"nickname"`
Level string `json:"level"`
}

....

obj := Outer{}

err := json.Unmarshal([]byte(js), &obj)

if err != nil {
fmt.Println(err)
}

fmt.Println(obj.Method) // prints "someString"

client := Client{}

err = json.Unmarshal(obj.Params[0], &client)

fmt.Println(client.Nickname) // prints "string"

工作(在午餐时间迅速拼凑)示例:http://play.golang.org/p/Gp7UKj6pRK

第二个 param 将需要您的一些输入..但您基本上是在将其解码为您创建的任何类型的 slice 来表示它。

关于json - 如何用 Go 结构体来表示这个复杂的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27181424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com