一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - JSON復雜數據處理之Json樹形結構數據轉Java對象并存儲到數據庫的實現

JSON復雜數據處理之Json樹形結構數據轉Java對象并存儲到數據庫的實現

2020-04-08 14:38baozhengw JAVA教程

這篇文章主要介紹了JSON復雜數據處理之Json樹形結構數據轉Java對象并存儲到數據庫的實現的相關資料,需要的朋友可以參考下

 在網站開發中經常遇到級聯數據的展示,比如選擇城市的時候彈出的省市縣選擇界面。很多前端制作人員習慣于從JSON中而不是從數據庫中獲取省市縣數據。那么在選擇了省市縣中的某一個城市 ,存儲到數據庫中需要存儲所選城市的代碼。所以需要一個能將JSON數據(一般存儲在javascript腳本中)結構全部導入到數據庫中的功能。

JSON的特點是支持層級結構、支持數組表示的對象 。下面的示例介紹如何將JSON的省市縣數據保存到數據庫中,實現原理非常簡單,就是利用JSON的java工具包API,將層次結構的JSON對象數組通過遞歸的方式首選轉換為Java對象數組,然后保存到數據庫中。

實現步驟是:

(一)首先定義一個JsonItem實體類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package org.openjweb.core.entity;
public class JsonItem
{
private String sub_id;
private String sub_name;
private JsonItem[] items;
public JsonItem[] getItems() {
return items;
}
public void setItems(JsonItem[] items) {
this.items = items;
}
public String getSub_id() {
return sub_id;
}
public void setSub_id(String sub_id) {
this.sub_id = sub_id;
}
public String getSub_name() {
return sub_name;
}
public void setSub_name(String sub_name) {
this.sub_name = sub_name;
}
}

(二)定義一個工具類,在工具類中讀取Json數據文件,并進行遞歸調用 :

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
public static String importJson(String fullFileName,String jsonType,String encoding,HttpServletRequest request) throws Exception
{
//Json轉換為實體類參考:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html
String sReturn = "";
String jsonData = "";
try
{
jsonData = FileUtil.getTextFileContent(fullFileName, encoding);
}
catch(Exception ex)
{
sReturn ="讀Json文件失敗!";
}
//獲取rootId
//logger.info("");
jsonData = jsonData.replace("\"items\":\"\"", ""); //去掉空的 items
String parentId = jsonData.substring(jsonData.indexOf("\"id\":")+5);
parentId = parentId.substring(0,parentId.indexOf(",")).trim();
parentId = parentId.replace("\"", "");
logger.info("root id=="+parentId);
String parentName = jsonData.substring(jsonData.indexOf("\"name\":")+7);
parentName = parentName.substring(0,parentName.indexOf(",")).trim();
parentName = parentName.replace("\"", "");
logger.info("root Name=="+parentName);
String rootData = jsonData.substring(jsonData.indexOf("\"items\":")+8,jsonData.lastIndexOf("}"));
rootData = jsonData.substring(jsonData.indexOf("[")+1,jsonData.lastIndexOf("]"));
//不同json的id,name表示不一樣,統一換成sub_id,subname以便與JsonItem的類屬性匹配
// 替換后方便統一處理
rootData = rootData.replace("city_id", "sub_id");
rootData = rootData.replace("sub_city", "sub_name");
rootData = rootData.replace("city", "sub_name");
rootData = rootData.replace("sub_txt", "sub_name");
rootData = rootData.replace("sub_industry", "sub_name");
rootData = rootData.replace("industry_id", "sub_id");
rootData = rootData.replace("industry", "sub_name");
rootData = rootData.replace("sub_profession", "sub_name");
rootData = rootData.replace("profession_id", "sub_id");
rootData = rootData.replace("profession", "sub_name");
//將rootData轉換為array
rootData = "[" + rootData + "]";
try
{
FileUtil.str2file(rootData, "d:/jsonData.txt", "utf-8");//存儲到磁盤檢查字符串轉換是否正確
}
catch(Exception ex)
{
}
JSONArray jsonArray = JSONArray.fromObject(rootData);
Object[] os = jsonArray.toArray();
JsonItem[] items = (JsonItem[]) JSONArray.toArray(jsonArray, JsonItem.class);
saveJsonEnt(jsonType,parentId,parentName,"-1",new Long(1));
dealJson(items,parentId,jsonType,new Long(1));
return sReturn ;
}
private static void saveJsonEnt (String jsonType,String jsonId,String jsonName,String parentId,Long levelId) throws Exception
{
logger.info(jsonType+"/"+jsonId+"/"+jsonName+"/"+parentId+"/"+String.valueOf(levelId));
CommJsonData ent = new CommJsonData();
ent.setJsonType(jsonType);
ent.setJsonCode(jsonId);
ent.setJsonName(jsonName);
ent.setRowId(StringUtil.getUUID());
ent.setParentCode(parentId);
ent.setLevelId(levelId);
IDBSupportService service = (IDBSupportService)ServiceLocator.getBean("IDBSupportService3");
service.saveOrUpdate(ent);
}
private static String dealJson(JsonItem[] jsonItem,String parentId,String jsonType,Long level)
{
String sReturn = "";
if(jsonItem!=null&&jsonItem.length>0)
{
for(int i=0;i<jsonItem.length;i++)
{
JsonItem ent = jsonItem[i];
//System.out.println(ent.getSub_id());
//System.out.println(ent.getSub_name());
try
{
saveJsonEnt(jsonType,ent.getSub_id(),ent.getSub_name(),parentId,level+1);
}
catch(Exception ex)
{
ex.printStackTrace();
}
if(ent.getItems()!=null)
{
//System.out.println("子項數:"+ent.getItems().length);
dealJson(ent.getItems(),ent.getSub_id(),jsonType,level+1);
}
else
{
//System.out.println("沒有子項!");
}
}
}
//此函數
return sReturn ;
}

示例數據(部分):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{
"name": "全國",
"id": "0000000000",
"description": "崇德易城市數據",
"modified": "2012年08月",
"copyright": "http://www.chongdeyi.com/",
"items": [
{
"city": "北京市",
"city_id": "1001000000",
"items": [
{
"sub_city":"東城區",
"sub_id":"2001001000"
},
{
"sub_city":"西城區",
"sub_id":"2001002000"
},
{
"sub_city":"朝陽區",
"sub_id":"2001006000"
},
{
"sub_city":"豐臺區",
"sub_id":"2001007000"
},
{
"sub_city":"石景山區",
"sub_id":"2001008000"
},
{
"sub_city":"海淀區",
"sub_id":"2001009000"
},
{
"sub_city":"門頭溝區",
"sub_id":"2001010000"
},
{
"sub_city":"房山區",
"sub_id":"2001011000"
},
{
"sub_city":"通州區",
"sub_id":"2001012000"
},
{
"sub_city":"順義區",
"sub_id":"2001013000"
},
{
"sub_city":"昌平區",
"sub_id":"2001014000"
},
{
"sub_city":"大興區",
"sub_id":"2001015000"
},
{
"sub_city":"懷柔區",
"sub_id":"2001016000"
},
{
"sub_city":"平谷區",
"sub_id":"2001017000"
},
{
"sub_city":"延慶縣",
"sub_id":"2001018000"
},
{
"sub_city":"密云縣",
"sub_id":"2001019000"
}]
},{
"city": "天津市",
"city_id": "1002000000",
"items": [
{
"sub_city":"和平區",
"sub_id":"2002001000"
}

以上所述是小編給大家介紹的JSON復雜數據處理之Json樹形結構數據轉Java對象并存儲到數據庫的實現

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产在线播放在线 | 日韩美女强理论片 | 性做久久久久免费观看 | 美女禁18 | 日韩免费高清完整版 | 亚洲精品tv久久久久久久久久 | 99在线精品日韩一区免费国产 | 深夜视频免费看 | 日韩国产成人 | 国产伦精一区二区三区视频 | 亚洲国产欧美在线人成aaa | 欧美性一级交视频 | 三级小说网站 | ass日本乱妇ass | 日本黄色大片免费观看 | 国产福利不卡一区二区三区 | eeuss18影院www国产 | 国产精品视频网 | 美女校花被调教出奶水 | 每天都要睡男人(nph) | 亚洲欧美在线免费观看 | 涩色爱| 久久午夜夜伦痒痒想咳嗽P 久久无码AV亚洲精品色午夜麻豆 | 91久久色 | 女人c交zzzooo在线观看 | 成人在线视频国产 | 91tv在线| 午夜性色一区二区三区不卡视频 | 国产一区二区三区水野朝阳 | 免费在线影院 | 娇女的呻吟亲女禁忌h16 | 奇米9999| 秋霞午夜| 二区三区在线观看 | 四虎综合九九色九九综合色 | 歪歪漫画a漫入口 | 性欧美hd | ipx358cn出差被男上司在线 | 精品国产免费久久久久久婷婷 | 亚洲天堂网站在线 | 亚洲 综合 欧美在线视频 |