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

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

  type GeneratePlan结构{
模式字符串json:“ 模式“
名称字符串json:” name“
模式字符串json:” schema“
版本字符串json:” version“
Attack_plans [] struct {
Attack_plan * Attack_planjson :“”攻击计划“
}json:”攻击计划“
}
type Attack_plan struct {
Attack_resources [] struct {
Attack_resource * Attack_resourcejson:” attack-resource“
}json:“攻击资源”
}
</ code> </ pre>

有人可以提出建议吗? 如果在初始化之前需要简化数据结构,则也建议这样做。 我刚接触过golang,因此请忽略要遵循的最佳做法。 任何帮助表示赞赏。 谢谢!</ p>
</ div>

展开原文

原文

I need to initialize the following data structure which will store a json. The Attack_plans will hold multiple plans and if I loop through the GeneratePlan struct, I need all the plans that were stored.

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"`
}

Can anyone please suggest something? If the data structure needs to be simplified before initializing it, then please suggest that as well. I am very new to golang so please ignore the best practices to follow. Any help is appreciated. Thanks!

douluan5523
douluan5523 你能让我知道怎么做吗?我需要两个结构,因为它将存储JSON文件中的值
接近 4 年之前 回复
duandou2763
duandou2763 这两个匿名结构只有一个字段。您是否出于某些原因需要它们?如果是这样,请重新排列声明以命名所有结构类型。
接近 4 年之前 回复
dongzan9069
dongzan9069 我试图使变量成为一个链,该链将保存所有结构的值。但是后来我得到了错误,因为“attackPlan不是类型,attackResource不是类型”,我意识到我无法像上面那样将一种类型的变量分配给另一种类型。这些是我使用的代码行,plan:=new(structs.GeneratePlan)AttackPlan:=new(structs.Attack_plan)AttackPlans:=[]attackPlan//用于存储攻击计划的切片AttackResource:=new(structs.Attack_resource)AttackResources:=[]attackResource
接近 4 年之前 回复

3个回答



我找到了解决方案! </ p>

  type GeneratePlan struct {
模式字符串json:“ mode”
名称字符串json:“ name”
模式 字符串json:“ schema”
版本字符串json:“ version”
Attack_plans [] struct1 json:“ attack-plans”`

}

type struct1 struct {
Attack_plan Attack_plan json:“ attack-plan”
}

type Attack_plan struct {
Attack_resouces [] struct2json:“ attack-resources”
}

type struct2 struct {
Attack_resource Attack_resource json:“攻击资源”
}
</ code> </ pre>
</ div>

展开原文

原文

I found the solution! This simplifies the above data structure!

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"`
}



为什么不只是将json.marshal您的对象为json字符串,您可以得到答案</ p>
</ DIV>

展开原文

原文

why don't u just json.marshal your object to a json string, you can got answer

dongshuo1856
dongshuo1856 实际上,该结构会将值输出为JSON。 我应该在问题中提到。 对此表示歉意。 因此,我有一个数据结构,可以根据某些条件从中获取一些值,并将这些值存储在上述结构中。 我有如何获取值的逻辑。 我只需要一种正确初始化上述结构的方法。
接近 4 年之前 回复
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)},
        }}},
    },
}
duanqizao6492
duanqizao6492 使用它太复杂了。 您知道如何简化我的结构吗? 喜欢而不是嵌套它如何将其分离为不同的结构?
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐