如何在Go中从一个文件读取多个JSON对象
如何使用Unmarshal读取存在两个不同对象的JSON文件 JSON示例: 这是对应于JSON文件的结构如何在Go中从一个文件读取多个JSON对象,json,go,unmarshalling,Json,Go,Unmarshalling,如何使用Unmarshal读取存在两个不同对象的JSON文件 JSON示例: 这是对应于JSON文件的结构 { "mysql": { "address": "127.0.0.1", "port": "3306", "user": "user", "password": "password", "database": "database" }, "postgres": { "address": "127.0.0.2", "port
{
"mysql": {
"address": "127.0.0.1",
"port": "3306",
"user": "user",
"password": "password",
"database": "database"
},
"postgres": {
"address": "127.0.0.2",
"port": "3306",
"user": "user2",
"password": "password2",
"database": "database2"
}
}
代码段:
类型数据库结构{
地址字符串
端口串
用户字符串
密码字符串
数据库字符串
}
类型Mysql struct{
数据库
}
类型Postgres结构{
数据库
}
要执行此操作,您需要将Mysql
和Postgres
结构包装成配置
结构,然后将其传递给Unmarshal函数:
类型配置结构{
Mysql
博士后博士后
}
func main(){
内容,错误:=ioutil.ReadFile(confPath)
变量配置
err=json.Unmarshal(内容和配置)
}
请参阅完整的工作示例:
希望这能帮助一些人。要做到这一点,您需要将
Mysql
和Postgres
结构包装到配置
结构中,然后将其传递给Unmarshal函数:
类型配置结构{
Mysql
博士后博士后
}
func main(){
内容,错误:=ioutil.ReadFile(confPath)
变量配置
err=json.Unmarshal(内容和配置)
}
请参阅完整的工作示例:
希望这能帮助一些人。另一种方式:
m := make(map[string]Db)
err := json.Unmarshal([]byte(input), &m)
尝试:
输出:
map[mysql:{127.0.0.1 3306 user password database} postgres:{127.0.0.2 3306 user2 password2 database2}]
map[mysql:map[address:127.0.0.1 port:3306 user:user password:password database:database] postgres:map[database:database2 address:127.0.0.2 port:3306 user:user2 password:password2]]
即使这样,你也可以:
m := make(map[string]map[string]string)
err := json.Unmarshal([]byte(input), &m)
尝试:
输出:
map[mysql:{127.0.0.1 3306 user password database} postgres:{127.0.0.2 3306 user2 password2 database2}]
map[mysql:map[address:127.0.0.1 port:3306 user:user password:password database:database] postgres:map[database:database2 address:127.0.0.2 port:3306 user:user2 password:password2]]
换一种方式:
m := make(map[string]Db)
err := json.Unmarshal([]byte(input), &m)
尝试:
输出:
map[mysql:{127.0.0.1 3306 user password database} postgres:{127.0.0.2 3306 user2 password2 database2}]
map[mysql:map[address:127.0.0.1 port:3306 user:user password:password database:database] postgres:map[database:database2 address:127.0.0.2 port:3306 user:user2 password:password2]]
即使这样,你也可以:
m := make(map[string]map[string]string)
err := json.Unmarshal([]byte(input), &m)
尝试:
输出:
map[mysql:{127.0.0.1 3306 user password database} postgres:{127.0.0.2 3306 user2 password2 database2}]
map[mysql:map[address:127.0.0.1 port:3306 user:user password:password database:database] postgres:map[database:database2 address:127.0.0.2 port:3306 user:user2 password:password2]]
谢谢你的备选方案,但对我来说,你的解决方案不太容易阅读/理解。谢谢你的备选方案,但对我来说,你的解决方案不太容易阅读/理解