gpt4 book ai didi

json 错误,无法将对象解码为 Go 值

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

我有这个 JSON 数据:

{
"InfoA" : [256,256,20000],
"InfoB" : [256,512,15000],
"InfoC" : [208,512,20000],
"DEFAULT" : [256,256,20000]
}

JSON-to-Go ,我得到了这个 Go 类型定义:

type AutoGenerated struct {
InfoA []int `json:"InfoA"`
InfoB []int `json:"InfoB"`
InfoC []int `json:"InfoC"`
DEFAULT []int `json:"DEFAULT"`
}

使用此代码 ( play.golang.org )

package main

import (
"encoding/json"
"fmt"
"os"
"strings"
)

func main() {
type paramsInfo struct {
InfoA []int `json:"InfoA"`
InfoB []int `json:"InfoB"`
InfoC []int `json:"InfoC"`
DEFAULT []int `json:"DEFAULT"`
}
rawJSON := []byte(`{
"InfoA" : [256,256,20000],
"InfoB" : [256,512,15000],
"InfoC" : [208,512,20000],
"DEFAULT" : [256,256,20000]
}`)
var params []paramsInfo
err := json.Unmarshal(rawJSON, &params)
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
}

我收到错误 json: cannot unmarshal object into Go value of type []main.paramsInfo

我不明白为什么。你能帮帮我吗?

最佳答案

JSON 源是单个对象,但您尝试将其解码为一个 slice 。将 params 的类型更改为 paramsInfo(非 slice ):

var params paramsInfo
err := json.Unmarshal(rawJSON, &params)
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
fmt.Printf("%+v", params)

然后输出(在 Go Playground 上尝试):

{InfoA:[256 256 20000] InfoB:[256 512 15000] InfoC:[208 512 20000]
DEFAULT:[256 256 20000]}

关于json 错误,无法将对象解码为 Go 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47433296/

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