Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Go中从一个文件读取多个JSON对象_Json_Go_Unmarshalling - Fatal编程技术网

如何在Go中从一个文件读取多个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

如何使用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": "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]]

谢谢你的备选方案,但对我来说,你的解决方案不太容易阅读/理解。谢谢你的备选方案,但对我来说,你的解决方案不太容易阅读/理解