gpt4 book ai didi

json - 无法从JSON解码int字段

转载 作者:行者123 更新时间:2023-12-01 21:20:27 25 4
gpt4 key购买 nike

我的目标是读取JSON文件。尽管以下程序可以正常读取文件,但是id字段值不正确。对于所有读取的对象,id字段值为0

JSON文件内容示例:

{
"users" : [
{
"id" : "1",
"name" : "Matt Hayden"
},
{
"id" : "2",
"name" : "David Warner"
},
]
}

Golang中的JSON文件阅读器程序
 type Schema struct {
Id int `json:"id"`
Name string `json:"name"`

}

func reader() {
fileName := "./input.json"

jsonFile, fileErr := os.Open(fileName)
if fileErr != nil {
_ = errors.Errorf("failed to open file %s : %v", fileName, fileErr)
}
defer jsonFile.Close()

bytesRead, readErr := ioutil.ReadAll(jsonFile)
if readErr != nil {
_ = errors.Errorf("failed to read json file %s : %v", fileName, readErr)
}

var sch Schema
unMarshalErr := json.Unmarshal(bytesRead, &sch)
if unMarshalErr != nil {
_ = errors.Errorf("failed to unmarshal JSON bytes : %v", unMarshalErr)
}

fmt.Printf("%+v", sch)
}

实际输出:
 {Users:[{Id:0 Name:Matt Hayden} {Id:0 Name:David Warner}]}

预期产量:
 {Users:[{Id:1 Name:Matt Hayden} {Id:2 Name:David Warner}]}

最佳答案

您可以在JSON结构标签中添加其他类型。看一下编码(marshal)的文档here

示例:https://play.golang.org/p/VqZu9SrnpW4

package main

import (
"encoding/json"
"fmt"
"reflect"
)

type Response struct {
Users []User `json:"users"`
}

type User struct {
ID int `json:"id,string"`
Name string `json:"name"`
}

func main() {
r := &Response{}

err := json.Unmarshal([]byte(`{
"users" : [
{
"id" : "1",
"name" : "Matt Hayden"
},
{
"id" : "2",
"name" : "David Warner"
}
]
}`), &r)
if err != nil {
panic(err)
}

fmt.Printf("%#v \n", r)
fmt.Printf("Type of ID is %s \n", reflect.TypeOf(r.Users[0].ID)) // int
}

关于json - 无法从JSON解码int字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59709188/

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