В разработке веб -сайтов часто встречается каскадный дисплей данных, такой как провинциальный, муниципальный и окружной выбор, который появляется при выборе города. Многие фронт-производители привыкли получать данные провинции, муниципального и округа от JSON, а не из баз данных. Затем, если город в провинции, город и округ выбраны, кодекс выбранного города должен храниться в базе данных. Следовательно, необходима функция для импорта всех структур данных JSON (обычно хранящихся в сценариях JavaScript) в базу данных.
JSON характеризуется поддержкой иерархических структур и подтверждающих репрезентаций массива. В следующем примере представлено, как сохранить провинциальные, муниципальные и окружные данные JSON в базе данных. Принцип реализации очень прост. Он должен использовать JSON JAVA Toolkit API для преобразования иерархического массива объектов JSON в массив объектов Java через рекурсию, а затем сохранить его в базу данных.
Шаги внедрения:
(А) Сначала определите класс объектов Jsonitem:
пакет org.openjweb.core.entity; public class jsonitem {private String sub_id; частная строка sub_name; private jsonitem [] its; public jsonitem [] getItems () {return itse;} public void setItems (jsonitem [] items) {this.Items = items;} public string string_id () {return sub_id sood; 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;}}(2) Определите класс инструментов, прочитайте файл данных JSON в классе инструментов и сделайте рекурсивные вызовы:
Публичная статическая строка ImportJson (String FullFileName, String jsontype, String Encoding, httpservletrequest) Throws Exception {// json преобразование в класс Entity Ссылка на класс: http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.htmlsting spring/1011/04/21/2023805.htmlsting sprintrating/jashrating stringsrating/jashrating stringmondt "; try {jsondata = fileUtil.getTextFileContent (fullFilEname, Encoding);} Catch (Exception Ex) {sreturn =" Чтение файла json не удалось! ";} // Получить Rootid // logger.info ("); Jsondata = jsondata.replace ("/" "/" "/" "/" ") // Удалить пустые элементы stricsstring parentid = jsondata.substring (jsondata.indexof ("/" id/":")+5); parentid = parentid.substring (0, parentid.indexof (",")). Trim (); parentid = parentid.replace ("/" ","); jsondata.substring (jsondata.indexof ("/" name/":")+7); parentname = parentname.substring (0, parentname.indexof (",")). trim (); parentname = parentname.replace ("/", ","); logger. jsondata.substring (jsondata.indexof ("/" eptions/":")+8, jsondata.lastindexof ("}")); rootdata = jsondata.substring (jsondata.indexof ("[")+1, jsondata.lasteDexof ("]"////идентификаторы идентификатора и идентификаторов ("[")+1, jsondata.lasteDexof ("///jsondats. Они заменяются sub_id и sub -seb -sepname, чтобы соответствовать атрибутам класса jsonitem //, удобно обрабатываться после замены rootdata = rootdata.replace ("city_id", "sub_id"); rootdata = rootdata.replace ("sub_city", "sub_name"); rootdata = rootdata. "sub_Name"); rootData = rootData.Replace ("sub_txt", "sub_name"); rootData = rootData.Replace ("sub_industry", "sub_Name"); rootData = rootData.Replace ("industra_id", "sub_id"); rootdata = rootdata. "sub_Name"); rootData = rootData.Replace ("sub_profession", "sub_name"); RootData = rootData.Replace ("profession_id", "sub_id"); rootdata = rootdata.replace ("Профессионал", "sub_Name"); // convert rootdata to arrame root root roota = " +" + " +" + "rootdata =" + " +" + "rootData =" + " +" rootdata = " +" + "rootData =" + " +" rootData = " +" rootData = " +" rootData = " +"/"rootData rootAta =". "]"; try {fileutil.str2file (rootdata, "d: /jsondata.txt", "utf-8"); // Сохранить в диск, чтобы проверить, является ли преобразование строки правильным} catch (Exception ex) {} jsonarray jsonarray = jsonarray.fromobject (rootdata); (Jsonitem []) jsonarray.toarray (jsonarray, jsonitem.class); savejsonent (jsontype, parentid, parentname, "-1", new long (1)); dealjson (элементы, parentid, jsontype, new long (1); return sreturn;} private static void void savejsh 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.setlevid (leveliD); idbsupportservice service = (IdbsupportService) ServiceLocator.getBean ("idBsUpportService3"); service.saveorUpdate (ent);} частная статическая строка dealjson (jsonitem [] jsonitem, string parentid, string jsontype, long level) {String sreturn = ""; if (jsonitem! 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, levid+1); ex) {ex.printstacktrace ();} if (ent.getItems ()! = null) {// system.out.println ("Количество субситемов:"+ent.getitems () Дети! ");}}} // Эта функция возвращает sreurn;}Пример данных (часть):
{«Имя»: «Национальное», «ID»: «00000000000», «Описание»: «Данные города Чонгдей», «Модифицировано»: «Август 2012», «Copyright»: «http://www.chongdeyi.com/",tems»: [{«город»: «beijing», «10010000»: «10010000». [{"sub_city": "Dongcheng District", "sub_id": "2001001000"}, {"sub_city": "xicheng District", "sub_id": "2001002000"}, {"sub_city": "chaoyang District", "sub_id": "2001006000"}, "sub_city": "F_CITY": "F_CITY": "F_CITIO Район "," sub_id ":" 2001007000 "}, {" sub_city ":" Shijingshan District "," sub_id ":" 2001008000 "}, {" sub_city ":" Haidian District "," sub_id ":" 2001009000 "}, {" sub_city ":" mentougou Район "," sub_id ":" 2001010000 "}, {" sub_city ":" Fangshan District "," sub_id ":" 2001011000 "}, {" s UB_CITY ":" Район Тонгжху "," sub_id ":" 2001012000 "}, {" sub_city ":" shunyi ":" 2001012000 "}, {" sub_city ":" Район "," sub_id ":" 2001013000 "}, {" sub_city ":" Changping District "," sub_id ":" 2001014000 "}, {" sub_city ":" Daxing District "," sub_id ":" 2001015000 "}, {" sub_: "huairou Район "," sub_id ":" 2001016000 "}, {" sub_city ":" Pinggu District "," sub_id ":" 2001017000 "}, {" sub_city ":" yanqing county "," sub_id ":" 2001018000 "}, {" sub_city ":" miyun Графство "," sub_id ":" 2001019000 "}]}, {" City ":" Tianjin City "," City_id ":" 1002000000 "," элементы ": [{" sub_city ":" Heping District "," sub_id ":" 2002001000 "}Выше приведено реализация комплексной обработки данных JSON, которая вводится вам редактором, а данные о структуре дерева JSON преобразуются в объекты Java и хранятся в базе данных.