在golang中解组平面和嵌套jsons

突出:

说我希望能够处理json以下形式的nested和unnested ,如本例所示:

source_json_1 := `{"owner": "John", "nickname": "Rose", "species": "Dog"}`
source_json_2 := `{"owner": "Doe", "Pet": [{"nickname": "Rose", "species": "Dog"},
                                          {"nickname": "Max", "species": "Cat"}]}`

如果我将其定义Pet为嵌入式结构,则可以轻松地将其解组:

type Owner struct {
    Name string
    Pet
}

type Pet struct {
    NickName    string
    Species     string
}

结果导致约翰的宠物被适当地整理。

{John {Rose Dog}}
{Doe { }}

但是由于Pet实际上也可以是Pets的一部分,因此Doe的Pets没有正确解组。如果相反

type Owner struct {
    Name string
    Pet  []Pet
}

然后,美国能源部被整理好。

{John []}
{Doe [{Rose Dog} {Max Cat}]}

我怎样才能抓住这两种情况?

Pet无论如何,我都希望最后将其编组为s的一部分。

阿德里安:

您正在查看两个单独的数据结构,因此要用一种struct类型的数据将其解组,则需要考虑这两种情况:

type Owner struct {
    Name string
    Pet
    Pets []Pet `json:"Pet"`
}

然后,如果您希望切片具有权威性,则在解组后,将嵌入的内容移至切片:

// owner := unmarshall blah blah
if owner.Pet != Pet{} {
    owner.Pets = append(owner.Pets, owner.Pet)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章