第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何解析層級(jí)數(shù)據(jù)

如何解析層級(jí)數(shù)據(jù)

Go
ABOUTYOU 2023-06-12 17:01:34
在 Oracle 中,我有這樣的表:| organization_id | ogranization_name | parent_id | level ||-----------------|-------------------|-----------|-------|| 1               | Facebook          |           | 0     || 2               | Instagram         | 1         | 1     || 3               | Whatsapp          | 1         | 1     || 4               | Dynamic           | 2         | 2     || 5               | Google            |           | 0     |此表顯示組織的層次結(jié)構(gòu)。我需要在我的 Go 應(yīng)用程序中創(chuàng)建一個(gè)樹狀嵌套的 JSON 響應(yīng):[    {        "organization_id": 1        "ogranization_name": "Facebook",        "childs": [            {                "organization_id": 2,                "ogranization_name": "Instagram",                "childs": null            },            {                "organization_id": 3,                "ogranization_name": "Whatsapp",                "childs": [                    {                        "organization_id": 4,                        "ogranization_name": "Dynamic",                        "childs": null                    }                ]            }        ]    },    {        "organization_id": 5        "ogranization_name": "Google",        "childs": null    }]我查詢 Oracle 數(shù)據(jù)庫。我也創(chuàng)建結(jié)構(gòu)。我的問題是如何知道一個(gè)組織是否有孩子?主要去:type Organisation struct {    ID       int            `json:"organization_id"`    Name     string         `json:"ogranization_name"`    Children []Organisation `json:"childs"`}rows,err := db.Query("select * from ORG_TABLE")if err != nil {    fmt.Println(err)    return}var organizations []Organizationfor rows.Next() {    var organization Organization    err = rows.Scan(&organization.ID, &organization.Name, ???)    if err != nil {        fmt.Println(err)        return    }}organizations = append(organizations, organization)
查看完整描述

1 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

最后,我找到了解決方案:


package main


import (

    "database/sql"

    "encoding/json"

    "fmt"

    "log"

    "sort"


    _ "github.com/mattn/go-sqlite3"

)


type Organization struct {

    ID       int             `json:"organization_id"`

    Name     string          `json:"organization_name"`

    Rang     int             `json:"organization_rang"`

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

}


func main() {

    db, err := sql.Open("sqlite3", "./database")

    if err != nil {

        log.Fatal(err)

    }


    defer db.Close()


    rows, err := db.Query("select ORGANIZATION_ID,ORGANIZATION_NAME,ORGANIZATION_RANG,PARENT_ORGANIZATION_ID from ORG")

    if err != nil {

        log.Fatal(err)

    }


    defer rows.Close()


    orgs := map[int]*Organization{}


    for rows.Next() {

        organization := &Organization{}

        var parentID sql.NullInt64


        if err = rows.Scan(&organization.ID, &organization.Name, &organization.Rang, &parentID); err != nil {

            log.Fatal(err)

        }


        if parentID.Valid {

            if parentOrg, ok := orgs[int(parentID.Int64)]; ok {

                parentOrg.Children = append(parentOrg.Children, organization)

            } else {

                orgs[int(parentID.Int64)] = &Organization{ID: int(parentID.Int64)}

                orgs[int(parentID.Int64)].Children = append(orgs[int(parentID.Int64)].Children, organization)

            }

        }


        if _, ok := orgs[organization.ID]; ok {

            orgs[organization.ID].Name = organization.Name

            orgs[organization.ID].Rang = organization.Rang

            continue

        }


        orgs[organization.ID] = organization

    }


    IDs := []int{}

    for k := range orgs {

        IDs = append(IDs, k)

    }

    sort.Ints(IDs)


    organizations := []Organization{}

    for _, ID := range IDs {

        if len(orgs[ID].Children) > 0 && orgs[ID].Rang == 1 {

            organizations = append(organizations, *orgs[ID])

        }

    }


    content, err := json.MarshalIndent(organizations, "", "  ")

    if err != nil {

        log.Fatal(err)

    }


    fmt.Println(string(content))

}



查看完整回答
反對(duì) 回復(fù) 2023-06-12
  • 1 回答
  • 0 關(guān)注
  • 182 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)