这是Golang的新手,我正在尝试获取一种结构,以将其转换为我的其他应用程序之一将使用的JSON对象。
预期的响应将类似于以下内容...
"access": {
"STOCK": "1",
"FOREX": "1",
"WEBFOREX": "1",
"WEBSTOCK": "1"
},
"subscription_group_dates": {
"32": {
"START_DATE": 1464753600,
"END_DATE": 1472616000
},
"42": {
"START_DATE": 1470024000,
"END_DATE": 1472616000
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在对象的“访问”部分中显示了我知道的工作部分。为了简洁起见,其他所有内容均被省略。对我而言,最困难的部分是处理golang中结构的嵌套性质...我认为以下结构可以工作,但我不确定语法。
在SubscriptionGroupDates类型下,我可以使用map [string] struct并将其余部分嵌入如图所示吗?见下文
type UCSUserAccess struct {
Groups map[string]string `json:"groups"`
Access map[string]string `json:"access"`
IsExpert string `json:"isExpert"`
SubscriptionGroupDates map[string]struct {
GroupID struct {
StartDate map[string]int `START_DATE`
EndDate map[string]int `END_DATE`
}
} `json:"subscription_group_dates"`
}
Run Code Online (Sandbox Code Playgroud)
另外...我已经在导入部分中导入了“时间”库。我将如何使用它来将日期声明为时间对象?(而不是map [string] int)
谢谢
您的结构有些复杂。具体来说,SubscriptionGroupDates是字符串到结构的映射,结构本身是字符串到int的映射,或者是具有两个int字段的静态结构。您嵌套了第二个结构,当日期应为整数时,将日期指定为地图:
type UCSUserAccess struct {
Groups map[string]string `json:"groups"`
Access map[string]string `json:"access"`
IsExpert string `json:"isExpert"`
SubscriptionGroupDates map[string]GroupID `json:"subscription_group_dates"`
}
type GroupID struct {
StartDate int `json:"START_DATE"`
EndDate int `json:"END_DATE"`
}
Run Code Online (Sandbox Code Playgroud)
这提供了您所期望的JSON。示例:https : //play.golang.org/p/rGm7zKJypk(通过jsonlint.com运行输出以验证其是否符合您的要求)。
至于时间戳,您在JSON中的时间戳将存储为Unix时间戳。为了使它们进入time.Time,您需要在解组之后或通过json.Unmarshaller
在自定义时间类型上实现接口来自己解析它们。有关此操作的详细信息,请参见此答案。
归档时间: |
|
查看次数: |
11959 次 |
最近记录: |