递归火山软件开发平台
标题:
go中结构体在YAML编码后多了cobject
[打印本页]
作者:
kaic49566
时间:
2025-4-26 12:13
标题:
go中结构体在YAML编码后多了cobject
<火山程序 类型 = "通常" 版本 = 1 />
结构体在YAML编码后多了cobject的空序列化,如何解决
包 web.conf <@允许包名不同 = 真>
类 Config <公开>
{
变量 Server <公开 静态 类型 = ServerConfig 编辑时信息 = "0, 3E662, 0, 0">
变量 MySQL <公开 静态 类型 = MySQLConfig 编辑时信息 = "0, 3E662, 0, 0">
变量 Redis <公开 静态 类型 = RedisConfig 编辑时信息 = "0, 3E662, 0, 0">
方法 初始化 <公开 静态>
{
变量 YAML哈希表 <参考 类型 = 文本到任意值哈希表>
YAML哈希表 = 文本到任意值哈希表.创建 ()
YAML哈希表.写2 ("MySQL", 新建对象 (MySQLConfig))
换行输出 (字节数组到文本 (YAML类.编码 (到任意值 (YAML哈希表))))
}
}
类 ServerConfig <公开>
{
变量 Port <公开 类型 = 整数>
变量 Mode <公开 类型 = 文本型>
}
类 MySQLConfig <公开 @输出名 = "MySQLConfig">
{
变量 Address <公开 类型 = 文本型 值 = "127.0.0.1:3306" 注释 = "地址和端口,默认值:\"127.0.0.1:3306\"" @输出名 = "Address"
@服务器.标签 = "`yaml:\"address\" json:\"address\"`">
变量 Username <公开 类型 = 文本型 值 = "your_db_uname" 注释 = "数据库账号" @输出名 = "Username"
@服务器.标签 = "`yaml:\"username\" json:\"username\"`">
变量 Password <公开 类型 = 文本型 值 = "your_db_pwd" 注释 = "数据库密码" @输出名 = "Password"
@服务器.标签 = "`yaml:\"password\" json:\"password\"`">
变量 DBName <公开 类型 = 文本型 值 = "your_db_name" 注释 = "数据库名称,提供欲连接的数据库名称" @输出名 = "DBName"
@服务器.标签 = "`yaml:\"db_name\" json:\"db_name\"`">
变量 Protocol <公开 类型 = 文本型 值 = "tcp" 注释 = "连接协议,默认值:\"tcp\"" @输出名 = "Protocol"
@服务器.标签 = "`yaml:\"protocol\" json:\"protocol\"`">
变量 Charset <公开 类型 = 文本型 值 = "utf8mb4" 注释 = "字符集编码,utf8mb4用于完全支持UTF-8编码,默认值:\"utf8mb4\""
@输出名 = "Charset" @服务器.标签 = "`yaml:\"charset\" json:\"charset\"`">
}
类 RedisConfig <公开>
{
变量 Host <公开 类型 = 文本型>
变量 Port <公开 类型 = 整数>
变量 Password <公开 类型 = 文本型>
变量 DB <公开 类型 = 整数>
}
作者:
创世魂
时间:
2025-4-26 20:36
设置本地类属性。
(, 下载次数: 19)
上传
点击文件名下载附件
作者:
kaic49566
时间:
2025-4-27 09:28
感谢,我终于完成了YAML配置读写到自定义结构体的代码了,
<火山程序 类型 = "通常" 版本 = 1 />
包 火山.程序 <"">
类 Config <公开>
{
变量 Server <公开 静态 类型 = ServerConfig 编辑时信息 = "0, 3E662, 0, 0">
变量 MySQL <公开 静态 类型 = MySQLConfig 编辑时信息 = "0, 3E662, 0, 0">
变量 Redis <公开 静态 类型 = RedisConfig 编辑时信息 = "0, 3E662, 0, 0">
方法 初始化 <公开 静态>
{
变量 错误 <参考 类型 = 错误接口 值 = 空对象>
变量 YAML哈希表 <参考 类型 = 文本到任意值哈希表>
YAML哈希表 = 文本到任意值哈希表.创建 ()
// 检查配置文件是否存在
// 创建应用程序默认配置文件
如果 (文件是否存在 ("./app.conf") == 假)
{
// Server初始值
Server.Mode = "debug"
Server.Port = 8080
// MySQL初始值
MySQL.Address = "127.0.0.1:3306"
MySQL.Username = "your_db_username"
MySQL.Password = "your_db_password"
MySQL.DBName = "your_db_name"
MySQL.Protocol = "tcp"
MySQL.Charset = "utf8mb4"
// Redis初始值
Redis.Address = "127.0.0.1:6379"
Redis.Username = "your_db_username"
Redis.Password = "your_db_password"
Redis.DB = 0
// 写
YAML哈希表.写2 ("Server", Server)
YAML哈希表.写2 ("MySQL", MySQL)
YAML哈希表.写2 ("Redis", Redis)
// YAML编码
文件类.创建 ("./app.conf").写接口.写数据 (YAML类.编码 (到任意值 (YAML哈希表)))
}
// 读取现有配置文件
YAML类.解码 (文件类.打开 ("./app.conf", 文件打开模式.只读, , 错误.取地址 ()).读接口.读全部数据 (错误.取地址 ()).值, 到任意值 (YAML哈希表))
JSON类.解码 (JSON类.编码 (YAML哈希表.读 ("Server").取 (文本到任意值哈希表), 错误.取地址 ()), Server)
JSON类.解码 (JSON类.编码 (YAML哈希表.读 ("MySQL").取 (文本到任意值哈希表), 错误.取地址 ()), MySQL)
JSON类.解码 (JSON类.编码 (YAML哈希表.读 ("Redis").取 (文本到任意值哈希表, ), 错误.取地址 ()), Redis)
换行输出 (Server)
换行输出 (MySQL)
换行输出 (Redis)
}
}
类 ServerConfig <公开 @本地类 = "">
{
变量 Mode <公开 类型 = 文本型 注释 = "设置不同的运行模式(debug、release、test)" @输出名 = "Mode"
@服务器.标签 = "`yaml:\"mode\" json:\"mode\"`">
变量 Port <公开 类型 = 整数 @输出名 = "Port" @服务器.标签 = "`yaml:\"port\" json:\"port\"`">
}
类 MySQLConfig <公开 @本地类 = "">
{
变量 Address <公开 类型 = 文本型 注释 = "地址和端口,默认值:\"127.0.0.1:3306\"" @输出名 = "Address"
@服务器.标签 = "`yaml:\"address\" json:\"address\"`">
变量 Username <公开 类型 = 文本型 注释 = "数据库账号" @输出名 = "Username"
@服务器.标签 = "`yaml:\"username\" json:\"username\"`">
变量 Password <公开 类型 = 文本型 注释 = "数据库密码" @输出名 = "Password"
@服务器.标签 = "`yaml:\"password\" json:\"password\"`">
变量 DBName <公开 类型 = 文本型 注释 = "数据库名称,提供欲连接的数据库名称" @输出名 = "DBName"
@服务器.标签 = "`yaml:\"db_name\" json:\"db_name\"`">
变量 Protocol <公开 类型 = 文本型 注释 = "连接协议,默认值:\"tcp\"" @输出名 = "Protocol"
@服务器.标签 = "`yaml:\"protocol\" json:\"protocol\"`">
变量 Charset <公开 类型 = 文本型 注释 = "字符集编码,utf8mb4用于完全支持UTF-8编码,默认值:\"utf8mb4\"" @输出名 = "Charset"
@服务器.标签 = "`yaml:\"charset\" json:\"charset\"`">
}
类 RedisConfig <公开 @本地类 = "">
{
变量 Address <公开 类型 = 文本型 注释 = "地址和端口,默认值:\"127.0.0.1:6379\"" @输出名 = "Address"
@服务器.标签 = "`yaml:\"address\" json:\"address\"`">
变量 Username <公开 类型 = 文本型 注释 = "数据库账号" @输出名 = "Username"
@服务器.标签 = "`yaml:\"username\" json:\"username\"`">
变量 Password <公开 类型 = 文本型 注释 = "数据库密码" @输出名 = "Password"
@服务器.标签 = "`yaml:\"password\" json:\"password\"`">
变量 DB <公开 类型 = 整数 注释 = "指定连接后选择的数据库索引" @输出名 = "DB" @服务器.标签 = "`yaml:\"db\" json:\"db\"`">
}
欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/)
Powered by Discuz! X3.4