Dans le développement de sites Web, l'affichage de données en cascade est souvent rencontré, comme l'interface de sélection provinciale, municipale et de comté qui apparaît lors du choix d'une ville. De nombreux producteurs frontaux sont habitués à obtenir des données provinciales, municipales et de comté de JSON plutôt que de bases de données. Ensuite, si une ville d'une province, d'une ville et d'un comté est sélectionnée, le code de la ville sélectionnée doit être stocké dans la base de données. Par conséquent, une fonction est nécessaire pour importer toutes les données JSON (généralement stockées dans JavaScript Scripts) dans la base de données.
JSON se caractérise par la support des structures hiérarchiques et la support des représentations de tableaux. L'exemple suivant introduit comment sauver les données provinciales, municipales et du comté de JSON dans une base de données. Le principe de mise en œuvre est très simple. Il s'agit d'utiliser l'API de la boîte à outils Java de JSON pour convertir le tableau d'objets JSON hiérarchique en un tableau d'objets Java via Recursion, puis l'enregistrer dans la base de données.
Les étapes de mise en œuvre sont:
(A) Définir d'abord une classe d'entité JSONITEM:
package org.openjweb.core.entity; classe publique jsonitem {String privé sub_id; chaîne privée sub_name; jsonitem privé [] public; 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) Définissez une classe d'outils, lisez le fichier de données JSON dans la classe d'outils et effectuez des appels récursifs:
Public Static String importjson (chaîne fullFileName, String JSOLTYPE, Encodage de chaîne, demande httpservletRequest) lève une exception {// JSON CONVERSION en Entity Class Reference: http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.htmllString srernn = ";; ""; essayez {jSondata = fileUtil.getTextFileContent (fullFileName, Encoding);} catch (exception ex) {sreturn = "Reading JSON Fichier a échoué!";} // Get rootId // logger.info (""); JSondata = "); // supprimer les éléments vides Parentid = jSondata.Substring (jSondata.Indexof ("/" id / ":") + 5); parentid = parentid.substring (0, parentid.indexof (",")). JSONDATA.SUBSTRING (jSondata.Indexof ("/" Name / ":") + 7); parentName = parentName.substring (0, parentName.indexof (",")). JSONDATA.SUBSTRING (JSONDATA.Indexof ("/" Items / ":") + 8, jSondata.LastIndexof ("}")); rootData = JSondata.SubString (jSondata.Indexof ("[") + 1, JSONDATA.LASTIDEXOF ("]")); // Ils sont remplacés par sub_id et subname pour correspondre aux attributs de classe de jsonitem // Il est pratique de gérer uniformément après le remplacement rootdata = rootdata.replace ("city_id", "sub_id"); rootdata = rootdata.replace ("sub_city", "sub_name"); rootdata = rootdata.replace (",", "," "sub_name"); rootdata = rootdata.replace ("sub_txt", "sub_name"); rootdata = rootdata.replace ("sub_industry", "sub_name"); rootdata = rootdata.replace ("industrie_id", "sub_id"); rootdata = rootdata.replace ("industrie", ", sub_id"); "sub_name"); rootdata = rootdata.replace ("sub_profession", "sub_name"); rootdata = rootdata.replace ("profession_id", "sub_id"); rootdata = rootdata.replace ("profession", "sub_name"); // convertir rootdata à l'arrat "]"; essayez {fileutil.str2file (rootdata, "d: /jsondata.txt", "utf-8"); // Enregistrer sur disque pour vérifier si la conversion de chaîne est correcte} catch (exception ex) {} jsonArray JSONArray = jsonArray.tomobject (rootData); (JSONITEM []) JSONArray.toArray (JSONArray, JsonItem.class); SaveJSonent (JSONype, Parentid, Parentname, "- 1", New Long (1)); DealJson (articles, Parentid, Jsonype, New Long (1)); Retour Srerur JSONNAME, String Parentid, Long NivedId) lève Exception {Logger.info (JSOLTYPE + "/" + JSONID + "/" + JSONNAME + "/" + PARTID + "/" + String.ValueOf (niveaux)); CommjSondata ent = new CommjSondata (); ent.setjSonType (JSontype); ent.setjsoncode (jsonid); ent.setjsonName (jsonName); ent.setrowid (stringUtil.getuuid ()); ent.setParentCode (parentid); ent.setlevelid); idbpportSensice Service = (IdbSupportService) ServiceLocator.getBean ("idbSupportService3"); Service.SaveOrUpDate (ent);} String static privé dealjson (jsonitem [] jsonitem, string Parentid, String JSO 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 (), le niveau + 1);} catch (exception (exception ex) {ex.printStackTrace ();} if (ent.getItems ()! = null) {// system.out.println ("numéro de Subitems: "+ ent.getItems (). Length); DealJson (ent.getItems (), ent.getsub_id (), JSetype, Level + 1);} else {// System.out.println (" No Children! ");}}} // Cette fonction renvoie Sreturn;}Exemples de données (pièce):
{"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": "Dongcheng District", "Sub_id": "2001001000"}, {"sub_city": "Xicheng District", "sub_id": "2001002000"}, {"sub_city": "Chaoyang District" 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 " District "," sub_id ":" 2001013000 "}, {" sub_city ":" Changping District "," sub_id ":" 2001014000 "}, {" sub_city ":" Daxing District "," Sub_id ":" 2001015000 "}, {" Sub_ City ":" Huaire " District "," sub_id ":" 2001016000 "}, {" sub_city ":" Pinggu District "," sub_id ":" 2001017000 "}, {" sub_city ":" Yanqing County "," sub_id ":" 2001018000 "}, {" sub_city ":" miyun " COMTÉ "," Sub_id ":" 2001019000 "}]}, {" City ":" Tianjin City "," City_id ":" 1002000000 "," Items ": [{" Sub_city ":" Heping District "," Sub_id ":" 2002001000 "}Ce qui précède est la mise en œuvre du traitement des données du complexe JSON, qui vous est introduit par l'éditeur, et les données de structure d'arborescence JSON sont converties en objets Java et stockées dans la base de données.