データベースの階層ツリー構造をJSONに変換され、

オリジナルリンクします。https://blog.csdn.net/Tonysdyp/article/details/80987959

最初は、データベース設計であります:

 

ArrayList <HashMapの<文字列オブジェクト>>取得、データベース、グローバルデータを照会することによって

各個々のノードはハッシュマップである、など

"シド":2001、 "CNAME":華為、 "PID":1001

下記に示すように、

 

データ・レディ、変換ツリーを開始

各ノードは、現在のHashMap形式で格納されているので、子ノード、すなわち赤ちゃんの情報を格納するために使用されるハッシュマップのキーに追加することができ、その後、本ノードは、PIDのノード情報記憶CID親ノードを有しますこのノードのキーに再帰を添加しながら赤ちゃんのArrayListが<HashMapの<文字列オブジェクト>>内部、調査はそれによって、ツリーのデータ構造を生成し、層ごとに継続され、その後、JSON変換ツールは、それが直接戻すことができますブラウザへ

公衆リストTreeGood(のArrayList <HashMapの<文字列オブジェクト>>ノート、文字列CID)スローのSQLException { 
        のArrayList <HashMapの<文字列オブジェクト>> treeGoods = 新規のArrayList <HashMapの<文字列オブジェクト>> ();
        (HashMapの<文字列、オブジェクト> 良好:ノート){ 
            のSystem.out.println(CID)。
            文字列のpid = good.get( "PID")== nullの"":good.get( "PID")+ "" ;
            もし(cid.equals(PID)){ 
                HashMapの <文字列、OBJECT>マップ= 新しいハッシュマップの<string、オブジェクト> ();=(文字列)good.get( "CID" )。
                マップ = 良いです。
                map.put( "赤ちゃん" 、TreeGood(ノート、CCID)); 
                treeGoods.add(マップ)
            } 
        } 
        戻りtreeGoods。
}

スプレッド

デフォルトでは、親クラスIDのルートノードを設定し、すべての分類されたフィールドを、見つける0

 // classfiyId、のクエリ分類リストによると、
    公共の一覧selectFindList(品目ID文字列、文字列classfiyId){
 // プロジェクトIDによると、すべてのカテゴリー 
        のArrayList <HashMapの<文字列、オブジェクト見る>> = classfiyMapper.selectList(のitemId); 
        リストのList1 = 新しいは新しいですArrayListの();
         試み{ 
            リスト1 = TreeGood(リスト、classfiyId)
            のSystem.out.println(リスト1); 
        } キャッチ(のSQLException E){ 
            e.printStackTrace(); 
        } 
        戻りのList1を; 
    }

 

 

/ * 再帰的にツリービュー構造として格納* / 
    パブリックリストTreeGood(のArrayList <HashMapの<文字列、オブジェクト>>ノート、文字列CID)がスローするSQLException { 
        のArrayList <HashMapを<文字列オブジェクト>> treeGoods = 新しい新規のArrayList <> (); 

        (HashMapの<文字列、オブジェクト> ○:注意){ 

            文字列PID = good.get( "PARENTID").equals( "0") "0" :? good.get( "PARENTID")+ "" ;
 // クエリは分岐ルートとして指定することができ、親クラスIDを所定のCID 
            IF {(cid.equals(PID))
                のHashMap <文字列、OBJECT> マップ。
                文字列のCCID =(String)をgood.get( "classfiyId")。
                マップ = 良いです。
                map.put( "子供" 、TreeGood(ノート、CCID)); 
                treeGoods.add(マップ)
            } 
        } 
        戻りtreeGoods。
    }

 

 

 

 

 結果:

[{
"showState":1、
"子供":[{
"showState":0、
"子供":[{
"showState":0、
"子供":[{
"showState":0、
"子":[]
"classfiyType":4、
"classfiyId": "3b9254f8-ac0d-43e9-a205-18350d4a0f9b"、
"タイトル": "铸造生铁"、
"PARENTID": "57f5289a-8dc7-4aa3-96be-b8776291603c"
}、
{
"showState":0、
"子供":[]、
"classfiyType":4、
"classfiyId": "bd5adfcb-22e7-4c20-92c9-0f2b202d21b2"、
"タイトル": "钛合金"、
"PARENTID ": "57f5289a-8dc7-4aa3-96be-b8776291603c"
}
]、
"classfiyType":3、
"classfiyId": "57f5289a-8dc7-4aa3-96be-b8776291603c"、
"タイトル": "生铁"、
"PARENTID": "cae3ee7b-fac5-48f2-bc4d-690dad581d51"
}、
{
"showState":0、
"子供":[{
"showState":0、
"子":[{
"showState":0、
"子供":[]、
"classfiyType":5、
"classfiyId": "c74eb1db-536d-4bad-a79d-3fc79fdc5e26"、
"タイトル": "方钢"、
"PARENTID":「ba595ced -cc2d-42b6-b004-78e9a4ada2fd」
}、
{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "459a9b33-573d-4ab4-821f-70d8aff58015"、
"タイトル": "扁钢"、
"PARENTID": "ba595ced-cc2d-42b6-b004-78e9a4ada2fd"
}、
{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "6e7d2aa6-9449-484c-939d-d1dc433646b2"、
"タイトル": "槽钢"、
"PARENTID": "ba595ced-cc2d-42b6-b004-78e9a4ada2fd"
}、
{
" showState ":0、
"子供":[]、
"classfiyType":5、
"classfiyId": "5cf501ac-fba2-4a00-b3da-2f575916a331"、
"タイトル": "角钢"、
"PARENTID":" ba595ced-cc2d -42b6-b004-78e9a4ada2fd "
}、
{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "85ceea86-5382-4c1c-8eb0-d5da8d63a013"、
"タイトル": "工字钢"、
"PARENTID": "ba595ced-cc2d-42b6-b004-78e9a4ada2fd"
}、
{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "41eb40db-7d4d-40e8-a7aa-77c2dce820fd"、
"タイトル": "六角钢"、
"PARENTID": "ba595ced-cc2d-42b6-b004-78e9a4ada2fd"
}
]、
" classfiyType ":4、
"classfiyId": "ba595ced-cc2d-42b6-b004-78e9a4ada2fd"、
"タイトル": "型钢"、
"PARENTID": "aaf6fc46-8d21-4d4f-9394-0e9b4a4a8df3"
}、
{
"showState" :0、
"子":[{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "44d3808d-0043-45d2-8da0-ed5d63041736"、
"タイトル": "无缝管"、
"PARENTID": "ff70bc9a-f2c5-4287-8ff4-68d85eb3bd1c"
}、
{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "a0b9cbab-b09f-445A-bf2b-caeb3541c19e"、
"タイトル": "焊管"、
"PARENTID": "ff70bc9a-f2c5-4287-8ff4-68d85eb3bd1c"
}
]、
「classfiyType 「:4、
"classfiyId": "ff70bc9a-f2c5-4287-8ff4-68d85eb3bd1c"、
"タイトル": "管材"、
"PARENTID": "aaf6fc46-8d21-4d4f-9394-0e9b4a4a8df3"
}、
{
"showState": 0、
"子":[{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "dd608087-8176-466b-8a9c-b5976d064b1d"、
"タイトル": "薄钢板"、
"PARENTID": "c8ba64ee-bf9a-44a6-9358-f674952e25a3"
}、
{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "87359155-131c-4f53-a9c4-a1fa2df36c08"、
"タイトル": "中厚钢板"、
"PARENTID": "c8ba64ee-bf9a-44a6-9358-f674952e25a3"
}
]、
"classfiyType":4、
"classfiyId": "c8ba64ee-bf9a-44a6-9358-f674952e25a3"、
"タイトル": "钢板"、
"PARENTID": "aaf6fc46-8d21-4d4f-9394-0e9b4a4a8df3"
}、
{
「showState ":0、
"子供":[{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "ea2ae294-0c55-4bc5-93c8-34667c40def9"、
"タイトル": "钢丝绳"、
"PARENTID": "206b9822-bf2e-4684-bec1-7fe5d5eab45b"
}、
{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "20571539-8aa1-4f9d-8b54-021320c80062"、
"タイトル": "钢绞线"、
"PARENTID": "206b9822-bf2e-4684-bec1-7fe5d5eab45b"
}、
{
"showState":0、
"子供":[]、
"classfiyType":5、
"classfiyId": "362999ed-564A-4245-8ce8-ce25a8a45124"、
"タイトル": "镀锌钢绞线"、
"PARENTID" "206b9822-bf2e-4684-bec1-7fe5d5eab45b"
}
]、
"classfiyType":4、
"classfiyId": "206b9822-bf2e-4684-bec1-7fe5d5eab45b"、
"タイトル": "钢丝绳、绞线"、
「PARENTID ":"aaf6fc46-8d21-4d4f-9394-0e9b4a4a8df3"
}、
{
"showState":0、
"子供":[{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "f0439782-86bd-4529から8932-db31f017f99c"、
"タイトル": "圆钢"、
"PARENTID": "f60dbd72-5537-4371-aed0-52b742785c9e"
}、
{
" showState ":0、
"子供":[]、
"classfiyType":5、
"classfiyId": "da855976-03eb-4b24-b3f9-6ee2c09fa52a"、
"タイトル": "螺纹钢"、
"PARENTID":" f60dbd72- 5537-4371-aed0-52b742785c9e "
}、
{
"showState":0、
"子":[]、
"classfiyType":5、
"classfiyId": "93d55bd6-dd41-4230-b4d5-cb5dc0f8684f"、
"タイトル": "线材"、
"PARENTID": "f60dbd72-5537-4371-aed0-52b742785c9e"
}
]、
"classfiyType":4、
"classfiyId": "f60dbd72-5537-4371-aed0-52b742785c9e"、
"タイトル": "钢筋"、
"PARENTID": "aaf6fc46-8d21-4d4f-9394-0e9b4a4a8df3"
}
]、
"classfiyType":3
「classfiyId 「: "aaf6fc46-8d21-4d4f-9394-0e9b4a4a8df3"、
"タイトル": "钢材"、
"PARENTID": "cae3ee7b-fac5-48f2-bc4d-690dad581d51"
}
]、
"classfiyType":2、
"classfiyId": "cae3ee7b-fac5-48f2-bc4d-690dad581d51"、
"タイトル": "黑色金属"、
"PARENTID": "94011477-40fe-4870-ad09-dce762153319"
}、
{
"showState":0、
"子":[{
"showState":0、
"子":[]、
"classfiyType":3、
"classfiyId": "7a67f4a1-c5b1-44ce-84ed-2c2d990bbc93"、
"タイトル": "铝及铝合金"、
"PARENTID": "eff8cc03-8475-4f0b-8a55-b05c027b6794"
}、
{
"showState":0、
"子":[]、
"classfiyType":3
「classfiyId ": "4b0f83ed-0064-42ad-81a2-95c76793b37f"、
"タイトル": "铜及铜合金"、
"PARENTID": "eff8cc03-8475-4f0b-8a55-b05c027b6794"
}
]、
"classfiyType":2、
" classfiyId ": "eff8cc03-8475-4f0b-8a55-b05c027b6794"、
"タイトル": "有色金属"、
"PARENTID": "94011477-40fe-4870-ad09-dce762153319"
}、
{
"showState":0、
"子供":[]、
"classfiyType":2、
"classfiyId": "40de0d21-39f5-458c-a0fc-5b3afb244db3"、
"タイトル": "祖母绿"、
"PARENTID": "94011477-40fe-4870-ad09-dce762153319"
}、
{
"showState":0、
"子":[]、
"classfiyType":2、
"classfiyId":「fb8a6f2a-e30c-4dc2-8772- 86d259578ed8" 、
"タイトル": "未命名"、
"PARENTID": "94011477-40fe-4870-ad09-dce762153319"
}、
{
"showState":0、
"子":[]、
"classfiyType":3
" classfiyId ": "57ca6782-b070-47a8-9917-86ed5c8f52ae"、
"タイトル": "未命名"、
"PARENTID": "94011477-40fe-4870-ad09-dce762153319"
}
]、
"classfiyType ":1、
"classfiyId": "94011477-40fe-4870-ad09-dce762153319"、
"タイトル": "金属"、
"PARENTID": "0"
}、
{
"showState":1、
"子供":[{
"showState":0、
"子":[]、
"classfiyType":2、
"classfiyId": "a0b6867d-2018-4add-89dd-9745d600acfd"は、
"タイトル" : "普通水泥"、
"PARENTID": "cf788cc1-faa5-4a88-9c02-770424cf5b7b"
}、
{
"showState":0、
"子":[]、
"classfiyType":2、
"classfiyId":「0a5b35e9- f1fa-47eb-BC33-d803b450986c "
"タイトル": "快硬高强水泥"、
"PARENTID": "cf788cc1-faa5-4a88-9c02-770424cf5b7b"
}、
{
"showState":0、
"子供":[]、
"classfiyType":2、
"classfiyId": "c7cba38d-58c0-49e4-b136-6424a0be5dd6"、
"タイトル": "耐侵蚀水泥"、
"PARENTID": "cf788cc1-faa5-4a88-9c02-770424cf5b7b"
}、
{
"showState":0、
"子":[]、
"classfiyType":2、
"classfiyId":「2b160f60-d3f0-4963-a5a5- 069a6565d180" 、
"タイトル": "膨胀水泥"、
"PARENTID": "cf788cc1-faa5-4a88-9c02-770424cf5b7b"
}
]、
"classfiyType":1、
"classfiyId":「cf788cc1-faa5-4a88-9c02-770424cf5b7b "
"タイトル": "水泥"、
"PARENTID": "0"
}、
{
"showState":1、
"子供":[]、
"classfiyType":1、
"classfiyId ": "f6cb44b3-b282-4730-b0e2-e3c313bb​​e52e"、
"タイトル": "木材"、
"PARENTID": "0"
}、
{
"showState":0、
"子":[]、
"classfiyType":1、
"classfiyId": "a12e7bf2-b9ed-475C-8f5b-f14def130d46"、
"タイトル": "测试"、
"PARENTID": "0"
}、
{
"showState" :0、
"子":[]、
"classfiyType":2、
"classfiyId": "4b72ce4a-3923-4f77-abc3-6eed659af041"、
"タイトル": "未命名"、
"PARENTID": "0"
}
]

 

おすすめ

転載: www.cnblogs.com/dk2557/p/12575063.html