gpt4 book ai didi

json - Go json.Unmarshal 返回 false 结构

转载 作者:IT王子 更新时间:2023-10-29 02:27:35 25 4
gpt4 key购买 nike

这里是 Golang 新手

我正在尝试从一个 .json 文件(与 Go 代码在同一目录中)解析为一个包含其他结构的结构,而我最接近成功的是一个包含 bool 值 false 的结构,这对我来说听起来很糟糕.

这是到目前为止我的 Go 代码中的内容

package main

import (
"encoding/json"
"fmt"

"io/ioutil"
)

type App struct {
Name string `json:"app:name"`
}

type Database struct {
Type string `json:"database:type"`
Name string `json:"database:name"`
User string `json:"database:user"`
Password string `json:"database:password"`
}

type Environment struct {
Mode string `json:"environment:mode"`
Debug bool `json:"environment:debug"`
}

type Config struct {
Environment Environment
App App
Database Database
}

func main() {
config, err := ioutil.ReadFile("config.json")
if err != nil {
fmt.Errorf("Error reading config file: %s", err)
}

var appSettings Config
json.Unmarshal(config, &appSettings)

fmt.Print(appSettings)
}

这是我的 .json 文件的内容

{
"App": {
"Name": "My_Project"
},
"Database": {
"Type": "postgres",
"Name": "my_project_db_name",
"User": "my_project_db_user",
"Password": "secret"
},
"Environment": {
"Mode": "development",
"Debug": true
}
}

编辑:这是 main()

末尾的打印结果

{{ false} {} { }}

我已经验证了 json 内容,没问题。正在导出结构名称和属性。你能看出我做错了什么吗?

最佳答案

你能试试这样改吗:

type App struct {
Name string `json:"name"`
}

type Database struct {
Type string `json:"type"`
Name string `json:"name"`
User string `json:"user"`
Password string `json:"password"`
}

type Environment struct {
Mode string `json:"mode"`
Debug bool `json:"debug"`
}

这是输出:

{{development true} {My_Project} {postgres my_project_db_name my_project_db_user secret}}

这里有一些方便引用的小文档:

// Field is ignored by this package.
Field int `json:"-"`

// Field appears in JSON as key "myName".
Field int `json:"myName"`

// Field appears in JSON as key "myName" and
// the field is omitted from the object if its value is empty,
// as defined above.
Field int `json:"myName,omitempty"`

// Field appears in JSON as key "Field" (the default), but
// the field is skipped if empty.
// Note the leading comma.
Field int `json:",omitempty"`

关于json - Go json.Unmarshal 返回 false 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41536383/

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