如何创建包含[]字节类型的嵌套json结构?
我目前正在尝试使用golang创建以下嵌套json,包括json列表和证书的DER编码字节数组()如何创建包含[]字节类型的嵌套json结构?,json,go,ssl-certificate,Json,Go,Ssl Certificate,我目前正在尝试使用golang创建以下嵌套json,包括json列表和证书的DER编码字节数组() { "webhooks": [{ "clientConfig":{ "caBundle":"<derData []bytes>" }, "name":"sth_name" }] } 但无法实例化我必须封送为json的结构 我尝试过使用字符串文字,许多初始化它的方法,就像对普通的非嵌套结构初始化一样 我还划分了结构,即类型jso
{
"webhooks":
[{
"clientConfig":{
"caBundle":"<derData []bytes>"
},
"name":"sth_name"
}]
}
但无法实例化我必须封送为json的结构
我尝试过使用字符串文字,许多初始化它的方法,就像对普通的非嵌套结构初始化一样
我还划分了结构,即类型jsonstruct..
类型webhooks…
等,但出现了错误
我也从内到外初始化了结构,但也没有工作
我需要在字节数组本身上创建您最好使用
base64
,并将其作为struct字段的有效负载
我个人不喜欢嵌套的命名结构。分解它们可以使代码具有更大的灵活性
例如:
type jsonstruct struct {
Webhooks []Webhook `json:"webhooks"`
}
type Webhook struct {
ClientConfig ClientConfig `json:"clientConfig"`
Name string `json:"name"`
}
type ClientConfig struct {
CaBundle string `json:"caBundle"`
}
func (cc ClientConfig) ToBytes() []byte {
return []byte(base64.StdEncoding.DecodeString(cc.CaBundle))
}
func (cc ClientConfig) FromBytes(cert []byte) {
cc.CaBundle = base64.StdEncoding.EncodeToString(cert)
}
请显示您尝试的实际代码和遇到的具体问题。谢谢!作品您建议在
base64
中编码字节数组有什么原因吗?JSON不支持本机二进制或字节数据。因此,我们需要将字节字符串转换为数据的字符串表示形式。如果我们只使用strings()
环绕byte[]
数组,我们可能会得到不符合JSON规范的绑定ASCII字符(奇怪的字符,如�代码>,等等)。Base64编码确保我们的数据不会违反JSON有效负载中的预期字符。谢谢你的详细解释!
type jsonstruct struct {
Webhooks []Webhook `json:"webhooks"`
}
type Webhook struct {
ClientConfig ClientConfig `json:"clientConfig"`
Name string `json:"name"`
}
type ClientConfig struct {
CaBundle string `json:"caBundle"`
}
func (cc ClientConfig) ToBytes() []byte {
return []byte(base64.StdEncoding.DecodeString(cc.CaBundle))
}
func (cc ClientConfig) FromBytes(cert []byte) {
cc.CaBundle = base64.StdEncoding.EncodeToString(cert)
}