<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 20:26:54
        文檔

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

        JSON復雜數據處理之Json樹形結構數據轉Java對象并存儲到數據庫的實現:在網站開發中經常遇到級聯數據的展示,比如選擇城市的時候彈出的省市縣選擇界面。很多前端制作人員習慣于從JSON中而不是從數據庫中獲取省市縣數據。那么在選擇了省市縣中的某一個城市 ,存儲到數據庫中需要存儲所選城市的代碼。所以需要一個能將JSON數據(一
        推薦度:
        導讀JSON復雜數據處理之Json樹形結構數據轉Java對象并存儲到數據庫的實現:在網站開發中經常遇到級聯數據的展示,比如選擇城市的時候彈出的省市縣選擇界面。很多前端制作人員習慣于從JSON中而不是從數據庫中獲取省市縣數據。那么在選擇了省市縣中的某一個城市 ,存儲到數據庫中需要存儲所選城市的代碼。所以需要一個能將JSON數據(一

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

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

        實現步驟是:

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

        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數據文件,并進行遞歸調用 :

        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 ;
        }

        示例數據(部分):

        {
        "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對象并存儲到數據庫的實現

        更多JSON復雜數據處理之Json樹形結構數據轉Java對象并存儲到數據庫的實現相關文章請關注PHP中文網!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

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

        JSON復雜數據處理之Json樹形結構數據轉Java對象并存儲到數據庫的實現:在網站開發中經常遇到級聯數據的展示,比如選擇城市的時候彈出的省市縣選擇界面。很多前端制作人員習慣于從JSON中而不是從數據庫中獲取省市縣數據。那么在選擇了省市縣中的某一個城市 ,存儲到數據庫中需要存儲所選城市的代碼。所以需要一個能將JSON數據(一
        推薦度:
        標簽: 數據 js 數據庫
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 美女扒开屁股让男人桶爽免费| 亚洲午夜一区二区三区| 青青视频免费在线| 国产精品冒白浆免费视频| 久久精品亚洲AV久久久无码| 亚洲一级免费视频| 亚洲另类春色国产精品| 4hu四虎最新免费地址| 国产成人精品日本亚洲18图| 亚洲天堂免费在线| 亚洲精品国产suv一区88| 国产精品免费播放| 日本免费精品一区二区三区| 亚洲av高清在线观看一区二区 | 国产又大又黑又粗免费视频| 亚洲欧美日韩中文二区| 日本免费一区二区三区最新| 国产精品亚洲综合一区在线观看| 免费一级特黄特色大片在线| a级毛片免费高清视频| 亚洲久本草在线中文字幕| 每天更新的免费av片在线观看 | 免费黄网站在线看| 亚洲字幕在线观看| 成年私人影院免费视频网站| 免费在线观看亚洲| 亚洲动漫精品无码av天堂| 国产福利在线免费| 国产尤物在线视精品在亚洲| 亚洲综合日韩久久成人AV| 无码av免费毛片一区二区 | 久久性生大片免费观看性| 久久精品国产亚洲av成人| 欧美在线看片A免费观看| 羞羞网站在线免费观看| 亚洲av无码一区二区三区不卡| aⅴ在线免费观看| 人体大胆做受免费视频| 久久久久亚洲AV片无码下载蜜桃| 日韩伦理片电影在线免费观看| 三级网站在线免费观看|