Dalam pengembangan situs web, tampilan data cascading sering ditemui, seperti antarmuka seleksi provinsi, kota dan daerah yang muncul saat memilih kota. Banyak produsen front-end terbiasa mendapatkan data provinsi, kota dan kabupaten dari JSON daripada dari database. Kemudian, jika sebuah kota di provinsi, kota dan kabupaten dipilih, kode kota yang dipilih perlu disimpan dalam database. Oleh karena itu, suatu fungsi diperlukan untuk mengimpor semua data JSON (biasanya disimpan dalam skrip JavaScript) ke dalam database.
JSON ditandai dengan mendukung struktur hierarkis dan representasi array pendukung. Contoh berikut memperkenalkan cara menyimpan data provinsi, kota, dan kabupaten JSON ke dalam database. Prinsip implementasi sangat sederhana. Ini adalah menggunakan Java Toolkit API JSON untuk mengubah array objek JSON hierarkis menjadi array objek Java melalui rekursi, dan kemudian menyimpannya ke database.
Langkah implementasinya adalah:
(A) Pertama -tama mendefinisikan kelas entitas 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;}}(2) Tentukan kelas alat, baca file data JSON di kelas alat, dan lakukan panggilan rekursif:
Public Static String ImportJSON (String FullFileName, String JSontype, String Encode, Permintaan HttpServletRequest) melempar Exception {// JSON Conversion to Entity Reference: http://www.cnblogs.com/hoojo/archive/2011/04/21/20238805.pom; ""; coba {jsondata = fileutil.gettextfileContent (fullfileName, encoding);} catch (Exception ex) {sreturn = "membaca file json gagal!";} // dapatkan rootid // logger.info (""); JSondata = JSondata. "" "" "" "" "" "" "" "" "" "" "" "" // Hapus item kosong 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) name = "/"/"/" "); logger.info = Parentname) ("/"", ""); logger.info = "PartentName" ("/" jsondata.substring (jsondata.indexof ("/" item/":")+8, jsondata.LastIndexof ("}"); rootData = jsondata.substring (jsondata. ") (" [")+1, jsondata.substring (jsondata.") ("[")+1, jsondata.substring (jsondata. ") (" [")+1, jsondata.substring (jsondata.") Mereka diganti dengan sub_id dan subname untuk mencocokkan atribut kelas jsonitem // lebih mudah untuk menangani secara seragam setelah penggantian rootData = rootdata.replace ("city_id", "sub_id"); rootdata = rootdata.replace ("sub_city", "sub_name" (rootdata); rootdata = rootdata ("Sub_city", "Sub_City", "Sub_NAME"; "Sub_name"); rootData = rootData.replace ("Sub_txt", "Sub_name"); rootData = rootData.replace ("Sub_indUstry", "Sub_name"); rootData = rootData.replace ("Industry", "Sub_id"); rootdata; "Sub_Name"); rootData = rootData.replace ("Sub_profession", "Sub_name"); rootData = rootData.replace ("Profesi_id", "Sub_id"); rootdata = rootdata.replace ("Profesi", "" Sub_Name ");" + "]"; coba {fileutil.str2file (rootdata, "d: /jsondata.txt", "utf-8"); // simpan ke disk untuk memeriksa apakah konversi string benar} catch (exception ex) {} jsonarray jsonarray = jsonarray.fromobject (rootdata) (JSonArray (JSonArray = JsonArray.fromobject (rootdata) (JSonArray (JSonArray = JsonArray.FromObject (rootdataM () () (JSONArray (JsonArray = JsonArray.FromObject (roothaMeM () {} JSONArray [JSONArray = JsonArray.FromObject (roothaMeM () {} jsonArray [JSONArray. 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) melempar 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); idbsports (IDBSupportService) ServiceLocator.getBean ("IDBSupportService3"); service.saveorupdate (ent);} string statis privat 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 (entt.getsub_name ()); coba {saveJsonent (jsontype, ent.getsub_id (), ent.getsub_name (), parentid, level, level+1); Ex) {ex.printstacktrace ();} if (ent.getItems ()! = null) {// System.out.println ("Jumlah subitem:"+ent.getItems (). Panjang); dealjson (ent.getItems (), ent.getsub_id (), jsontype, level+1), ower anak -anak! ");}}} // fungsi ini mengembalikan sreturn;}Contoh data (bagian):
{"name": "National","id": "00000000000","description": "Chongdeyi City Data","modified": "August 2012","copyright": "http://www.chongdeyi.com/","items": [{"city": "Beijing","city_id": "1001000000","items": [{"Sub_City": "District Dongcheng", "Sub_id": "2001001000"}, {"Sub_City": "Xicheng District", "Sub_id": "2001002000"}, {"Sub_City": "Chaoyang District", "Sub_id": "2001006.000 Distrik "," sub_id ":" 2001007000 "}, {" sub_city ":" distrik shijingshan "," sub_id ":" 2001008000 "}, {" sub_city ":" distrik haidian "," sub_id ":" 2001009000 "}, {" Sub_City ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":" Sub_City ":": "SUB_CITY": " Distrik "," sub_id ":" 2001010000 "}, {" sub_city ":" distrik fangshan "," sub_id ":" 2001011000 "}, {" s ub_city ":" distrik tongzhou "," sub_id ":" 2001012000 "}, {" Sub_City ":" Distrik "," Sub_id ":" 2001013000 "}, {" Sub_City ":" Changping District "," Sub_id ":" 2001014000 "}, {" Sub_City ":" DAXING DISTRICE "," SUB_ID ":" 2001015000 "}, {" Sub_ City ":" HUAIR "2001015000"}, {"Sub_ CITY": "HUAIROUR" HUAIRUURUURUURUURUURURUU Distrik "," Sub_id ":" 2001016000 "}, {" Sub_City ":" Distrik Pinggu "," Sub_id ":" 2001017000 "}, {" Sub_City ":" Yanqing County "," Sub_id ":" 2001018000 "}, {" Sub_City ":" Mi: "Mi:" Mi: "Mi:" Mi: "Mi:" Mi: "Mi:" Mi: "Mi." County "," sub_id ":" 2001019000 "}]}, {" city ":" tianjin city "," city_id ":" 1002000000 "," item ": [{" sub_city ":" heping distrik "," sub_id ":" 2002001000 "}Di atas adalah implementasi pemrosesan data kompleks JSON, yang diperkenalkan kepada Anda oleh editor, dan data struktur pohon JSON dikonversi menjadi objek Java dan disimpan dalam database.