In der Website -Entwicklung wird häufig eine Kaskadierung von Datenanzeigen auftreten, wie die Provincial-, Municipal and County Selection Interface, die bei der Auswahl einer Stadt auftaucht. Viele Front-End-Produzenten sind es gewohnt, die Daten der Provinz-, Gemeinde- und Bezirksdaten von JSON und nicht aus Datenbanken zu erhalten. Wenn dann eine Stadt in einer Provinz, einer Stadt und einem Landkreis ausgewählt wird, muss der Code der ausgewählten Stadt in der Datenbank gespeichert werden. Daher ist eine Funktion erforderlich, um alle JSON -Daten (normalerweise in JavaScript -Skripten gespeichert) Strukturen in die Datenbank zu importieren.
JSON ist durch die Unterstützung hierarchischer Strukturen und die Unterstützung von Array -Darstellungen gekennzeichnet. Das folgende Beispiel führt vor, wie die Daten der Provinz-, Gemeinde- und Bezirksdaten von JSON in eine Datenbank gerettet werden. Das Implementierungsprinzip ist sehr einfach. Es wird mit der Java -Toolkit -API von JSON verwendet, um das hierarchische JSON -Objektarray in ein Java -Objekt -Array durch Rekursion zu konvertieren und es dann in der Datenbank zu speichern.
Die Implementierungsschritte sind:
(A) Definieren Sie zuerst eine JsonItem -Entitätsklasse:
Paket 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 setemsems (jsonItem [] items) {this.items;} public stells velzip;} public subsuB_Id () {return sub_iDs = items;} public velfs; setSub_id (String sub_id) {this.sub_id = sub_id;} public string getuB_name () {return sub_name;} public void setSub_name (string sub_name) {this.sub_name = sub_name;}}(2) Definieren Sie eine Werkzeugklasse, lesen Sie die JSON -Datendatei in der Werkzeugklasse und tätigen Sie rekursive Anrufe:
public static String importjson (String fullFileName, String JsonType, String -Codierung, HttpServletRequest -Anforderung) Ausnahme ausnahmslos {// JSON -Konvertierung in die Entitätsklasse Referenz: http://wwww.cnblogs.com/hoojo/archive/2011/21/2023805.. ""; try {jsondata = fileUtil.getTextFileContent (fullFileName, codieren);} catch (Ausnahme ex) {sreturn = "Lesen jSON -Datei fehlgeschlagen!";} // RootID // logger.info ("); // leere itemsStringString -ParentID = jSondata.substring (jSondata.Indexof ("/" id/":")+5); parentId = parentId.substring (0, parentId.indexof (",")). Trim (); parentId.replace ("/" "); jSondata.substring (jSondata.Indexof ("/" name/":")+7); parentName = parentName.substring (0, parentName.indexof (")). trim (); parentName = parentName.Replace ("/"", ""; jSondata.substring (jSondata.indexof ("/" items/":")+8, jsondata.lastindexof ("}"); RootData = jsondata.substring (jSondata.indexof ("[")+1, jSondata.lastExof ("). Sie werden durch sub_id und subname ersetzt, um den Klassenattributen von JsonItem zu entsprechen // Es ist bequem, nach dem Ersatz rootData = rootData.replace ("City_ID", "sub_id"); rootData = rootData.Replace ("sub_city", "sub_name"); "sub_name"); rootData = rootData.replace ("sub_txt", "sub_name"); rootData = rootData.replace ("sub_industry", "sub_name"); rootData = rootData.replace ("sub_id"); "sub_name"); rootData = rootData.replace ("sub_profession", "sub_name"); rootData = rootData.replace ("profession_id", "sub_id"); rootData = rootdata.Replace ("professional", "sub_name"); + "]"; try {fileUtil.str2File (rootData, "d: /jsondata.txt", "utf-8"); // Speichern Sie auf der Festplatte, um zu überprüfen, ob die String-Konvertierung korrekt ist. = (JsonItem []) jsonArray.toarray (jsonArray, jsonItem.class); Savejsonent (JsonType, ParentId, ParentName, "-1", New Long (1)); Dealjson (Elemente, Parentid, JsonType, New Long (1)); JSONNAME, STRING PARTID, LANGE VEILIDID) löst eine Ausnahme aus {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 (IdbsupportService) servicelocator.getBean ("idbsupportService3"); service.saveorUpdate (ent);} private statische String Dealjson (jsonItem [] jsonItem, String parentId, String jsonType, Long Level) {String sreturn = ""; 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, Level+1); ex) {ex.printstacktrace ();} if (ent.GetItems ()! Kinder! ");}}} // Diese Funktion gibt Sreturn zurück;}Beispieldaten (Teil):
{"Name": "National", "ID": "00000000000", "Beschreibung": "Chongdeyi -Daten", "modifiziert": "August 2012", "Copyright": "http://www.chongdeyi.com/",sems [{"sub_city": "dongcheng District", "sub_id": "2001001000"}, {"sub_city": "xicheng District", "sub_id": "2001002000"}, {"sub_city": "Chaoyang District", "sub_id": "2001006000", "{{F. District","sub_id":"2001007000"},{" sub_city":"Shijingshan District","sub_id":"2001008000"},{"sub_city":"Haidian District","sub_id":"2001009000"},{"sub_city":"Mentougou District","sub_id":"2001010000"},{"sub_city":"Fangshan District","sub_id":"2001011000"},{"s ub_city":"Tongzhou District","sub_id":"2001012000"},{"sub_city":"Shunyi Distrikt "," sub_id ":" 2001013000 "}, {" sub_city ":" Changping District "," sub_id ":" 2001014000 "}, {" sub_city ":" Daxing District "," sub_id ":" 2001015000 "}, {" sub_ City ":" Huairou: "Huairou": "Huairou": "Huairou": "Huairou": "Huairou": "Huairou": "Huairou": "Huairou": "Huairou" Distrikt "," sub_id ":" 2001016000 "}, {" sub_city ":" pinggu District "," sub_id ":" 2001017000 "}, {" sub_city ":" yanqing County "," sub_id ":" 2001018000 "}, {" sub_city ":" miyun County "," sub_id ":" 2001019000 "}]}, {" City ":" Tianjin City "," City_id ":" 10020000 "," Elemente ": [{" sub_city ":" hing District "," sub_id ":" 2002001000 "}Das oben oben ist die Implementierung der vom Editor vorgelegten JSON -Komplex -Datenverarbeitung, die Ihnen vom Editor vorgestellt wird, und die JSON -Baumstrukturdaten werden in Java -Objekte umgewandelt und in der Datenbank gespeichert.