3 回答

TA贡献1775条经验 获得超8个赞
PrivateLinkServiceConnections
被定义为一个数组。您不能像访问对象那样访问它。要向其中添加项目,您需要使用append
函数。
此外,您已将其定义为内联匿名结构,因此您的代码变得混乱。为 PrivateLinkServiceConnections 定义一个特定的类型,然后每次追加时,只需分配它而无需重新声明它。这是一种不好的做法。

TA贡献1895条经验 获得超3个赞
最简单、最明智的方法是定义一个新类型:
type PrivateLinkServiceConnections struct {
Name string `json:"name"`
...
}
Properties struct {
Connections []PrivateLinkServiceConnections `json:"privateLinkServiceConnections"`
...
否则,您必须在每次初始化实例时明确指定每个结构的结构,例如:
x:=struct {
Name string `json:"name"`
Properties struct {
PrivateLinkServiceID string `json:"privateLinkServiceId"`
GroupIds string `json:"groupIds"`
PrivateLinkServiceConnectionState struct {
Status string `json:"status"`
Description string `json:"description"`
ActionsRequired string `json:"actionsRequired"`
} `json:"privateLinkServiceConnectionState"`
} `json:"properties"`
}{
Name:"name",
Properties:struct {
PrivateLinkServiceID string `json:"privateLinkServiceId"`
GroupIds string `json:"groupIds"`
PrivateLinkServiceConnectionState struct {
Status string `json:"status"`
Description string `json:"description"`
ActionsRequired string `json:"actionsRequired"`
} `json:"privateLinkServiceConnectionState"`
} {
PrivateLinkServiceID: id,
},
}
storageAccount.PrivateLinkServiceconnections=append(storageAccount.PrivateLinkServiceConnections, x)
...

TA贡献1799条经验 获得超9个赞
起初我做了一个解决方法来添加我需要的“[]”并且它有效但它不是很好。
但现在我终于明白了
#模型文件
type AccessPolicieS struct {
TenantID string `json:"tenantId"`
ObjectID string `json:"objectId"`
Permissions struct {
Keys []string `json:"keys"`
Secrets []string `json:"secrets"`
Certificates []string `json:"certificates"`
} `json:"permissions"`
}
type AzVaultPriv struct {
Properties struct {
AccessPolicies []AccessPolicieS
} `json:"properties"`
}
acessP := models.AccessPolicieS{}
acessP.TenantID = "*******"
acessP.Permissions.Keys = append(acessP.Permissions.Keys, "UnwrapKey")
acessP.Permissions.Keys = append(acessP.Permissions.Keys, "WrapKey")
acessP.Permissions.Keys = append(acessP.Permissions.Keys, "Get")
acessP.Permissions.Secrets = append(acessP.Permissions.Secrets, "get")
acessP.Permissions.Certificates =
append(acessP.Permissions.Certificates, "get")
newModel := models.AzVaultPriv {}
newModel.Properties.AccessPolicies = append(newModel.Properties.AccessPolicies, acessP)
marshaledObject, _ := json.Marshal(newModel)
按照下面的一个不理想的解决方法,但让我继续前进,直到我解决了这个问题。
func FormatJsonStructVaultPriv(json []byte) []byte {
json = bytes.Replace(json, []byte("Policies\":{"), []byte("Policies\":[{"), 1)
json = bytes.Replace(json, []byte("get\"]}}}}"), []byte("get\"]}}]}}"), 1)
return json
}
谢谢您的帮助!
- 3 回答
- 0 关注
- 119 浏览
添加回答
举报