Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
如何创建包含[]字节类型的嵌套json结构?_Json_Go_Ssl Certificate - Fatal编程技术网

如何创建包含[]字节类型的嵌套json结构?

如何创建包含[]字节类型的嵌套json结构?,json,go,ssl-certificate,Json,Go,Ssl Certificate,我目前正在尝试使用golang创建以下嵌套json,包括json列表和证书的DER编码字节数组() { "webhooks": [{ "clientConfig":{ "caBundle":"<derData []bytes>" }, "name":"sth_name" }] } 但无法实例化我必须封送为json的结构 我尝试过使用字符串文字,许多初始化它的方法,就像对普通的非嵌套结构初始化一样 我还划分了结构,即类型jso

我目前正在尝试使用golang创建以下嵌套json,包括json列表和证书的DER编码字节数组()

{
"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)
}