gpt4 book ai didi

json - 在 golang 中解码一个 json 数组

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:19 25 4
gpt4 key购买 nike

我有一个关于 golang 解码的问题。我试图解码 Json 数组,但它在一个解码中给出 nil 结果,而在另一个解码中成功。我不明白背后的原因。这是代码中的错误还是预期的?

package main

import "fmt"
import "encoding/json"

type PublicKey struct {
Id int
Key string
}

type KeysResponse struct {
Collection []PublicKey
}

func main() {
keysBody := []byte(`[{"id": 1,"key": "-"},{"id": 2,"key": "-"},{"id": 3,"key": "-"}]`)
keys := make([]PublicKey,0)

json.Unmarshal(keysBody, &keys)//This works
fmt.Printf("%#v\n", keys)
response := KeysResponse{}
json.Unmarshal(keysBody, &response)//This doesn't work
fmt.Printf("%#v\n", response)

}

http://play.golang.org/p/L9xDG26M8-

最佳答案

这预计不会奏效。您在 json 中拥有的是 PublicKey 类型的数组。 KeysResponse 类型将用于 json,如下所示;

{
"Collection": [{"id": 1,"key": "-"},{"id": 2,"key": "-"},{"id": 3,"key": "-"}]
}

这不是你所拥有的。如果您希望数据以该类型存储,我建议如下; response := KeysResponse{keys} 在你解码为 keys 之后。

详细说明这种区别。在工作案例中,json 只是一个包含对象的数组。我上面写的 json 是一个对象,它有一个名为 Collection 的属性,它是数组类型,数组中的对象由 PublicKey 类型表示(具有int 称为 id 和一个称为 key 的字符串)。在编写解码 json 的代码时,像这样使用简单的英语来描述结构会很有帮助,它会准确地告诉您 Go 中需要哪些类型/结构来保存数据。

关于json - 在 golang 中解码一个 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34032150/

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