为了账号安全,请及时绑定邮箱和手机立即绑定

如何在深度嵌套的 JSON 中将所有子 ID 与其父 ID 进行比较?

如何在深度嵌套的 JSON 中将所有子 ID 与其父 ID 进行比较?

Go
当年话下 2022-06-21 10:21:29
这是我需要验证的 JSON 文档。我必须检查孩子中的所有 parent_id 是否正确。如果所有父子 ID 都是正确的,我将返回一个“有效”字符串。{  "id": 10,  "children": [    {      "id": 25,      "parent_id": 10,      "children": [        {          "id": 131,          "parent_id": 25,          "children": null        },        {          "id": 33,          "parent_id": 25,          "children": [            {              "id": 138,              "parent_id": 33,              "children": null            },            {              "id": 139,              "parent_id": 33,              "children": null            },            {              "id": 140,              "parent_id": 33,              "children": null            },            {              "id": 160,              "parent_id": 33,              "children": null            },            {              "id": 34,              "parent_id": 33,              "children": [                {                  "id": 26,                  "parent_id": 34,                  "children": null                },                {                  "id": 64,                  "parent_id": 34,                  "children": null                },                {                  "id": 65,                  "parent_id": 34,                  "children": null                }              ]            },            {              "id": 35,              "parent_id": 33,              "children": null            },            {              "id": 36,              "parent_id": 33,              "children": null            },            {              "id": 38,              "parent_id": 33,              "children": null            },            {              "id": 39,              "parent_id": 33,              "children": null            },            {              "id": 40,              "parent_id": 33,              "children": null            },我从 API 中获取值,但现在我很难编码 Json 值
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

定义与数据结构匹配的类型:


type node struct {

    ID       int     `json:"id"`

    ParentID int     `json:"parent_id"`

    MainID   int     `json:"main_id"`

    Children []*node `json:"children"`

}

编写一个递归函数来检查数据:


func check(n *node) bool {

    for _, c := range n.Children {

        if c.ParentID != n.ID {

            return false

        }

        if !check(c) {

            return false

        }

    }

    return true

}

将 JSON 解组为该类型的值。检查结果。


var n node

err := json.Unmarshal(data, &n)

if err != nil {

    log.Fatal(err)

}

fmt.Println(check(&n))

在 GoLang PlayGround 上运行它。


查看完整回答
反对 回复 2022-06-21
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信