我们如何在golang中的struct中初始化类型struct(存储json输出)的数组

时间:2016-12-01 01:53:40

标签: arrays json go struct

我需要初始化以下将存储json的数据结构。 Attack_plans将包含多个计划,如果我遍历GeneratePlan结构,我需要存储的所有计划。

type GeneratePlan struct {
    Mode         string `json:"mode"`
    Name         string `json:"name"`
    Schema       string `json:"schema"`
    Version      string `json:"version"`
    Attack_plans []struct {
        Attack_plan *Attack_plan `json:"attack-plan"`
    } `json:"attack-plans"`
}
type Attack_plan struct {
    Attack_resources []struct {
        Attack_resource *Attack_resource `json:"attack-resource"`
    } `json:"attack-resources"`
}

任何人都可以建议吗?如果在初始化之前需要简化数据结构,那么请同时建议。我是golang的新手,所以请忽略最佳实践。任何帮助表示赞赏。谢谢!

3 个答案:

答案 0 :(得分:0)

为什么不只是json.marshal你的对象为json字符串,你可以得到答案

答案 1 :(得分:0)

generatePlan := GeneratePlan{
    Mode:    "mode",
    Name:    "name",
    Schema:  "sachema",
    Version: "version",
    Attack_plans: []struct {
        Attack_plan *Attack_plan `json:"attack-plan"`
    }{
        {Attack_plan: &Attack_plan{[]struct {
            Attack_resource *Attack_resource `json:"attack-resource"`
        }{
            {Attack_resource: new(Attack_resource)},
            {Attack_resource: new(Attack_resource)},
        }}},
        {Attack_plan: &Attack_plan{[]struct {
            Attack_resource *Attack_resource `json:"attack-resource"`
        }{
            {Attack_resource: new(Attack_resource)},
            {Attack_resource: new(Attack_resource)},
        }}},
    },
}

答案 2 :(得分:0)

我找到了解决方案!这简化了上述数据结构!

type GeneratePlan struct{
    Mode    string `json:"mode"`
    Name    string `json:"name"`
    Schema  string `json:"schema"`
    Version string `json:"version"`
    Attack_plans []struct1 `json:"attack-plans"`

} 

type struct1 struct {
    Attack_plan Attack_plan `json:"attack-plan"`
}


type Attack_plan struct{
    Attack_resouces []struct2 `json:"attack-resources"`
}

type struct2 struct {
    Attack_resource Attack_resource `json:"attack-resource"`
}