En el desarrollo del sitio web, la pantalla de datos en cascada a menudo se encuentra, como la interfaz de selección provincial, municipal y del condado que aparece al elegir una ciudad. Muchos productores de front-end están acostumbrados a obtener datos provinciales, municipales y del condado de JSON en lugar de de bases de datos. Luego, si se selecciona una ciudad en una provincia, ciudad y condado, el código de la ciudad seleccionada debe almacenarse en la base de datos. Por lo tanto, se necesita una función para importar todas las estructuras de datos JSON (generalmente almacenados en scripts JavaScript) en la base de datos.
JSON se caracteriza por apoyar estructuras jerárquicas y apoyar representaciones de matriz. El siguiente ejemplo presenta cómo salvar los datos provinciales, municipales y del condado de JSON en una base de datos. El principio de implementación es muy simple. Es utilizar la API Java Toolkit de JSON para convertir la matriz de objetos JSON jerárquico en una matriz de objeto Java a través de la recursión, y luego guardarla en la base de datos.
Los pasos de implementación son:
(A) Primero defina una clase de entidad JSONItem:
paquete org.openjweb.core.entity; public class jsonItem {private String sub_id; private String sub_name; private jsonItem [] elementos; public jsonItem [] getItems () {return items;} public void setItems (jsonitem [] items) {this.Items = items;} public String getSub_id () {return SetItems 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) Defina una clase de herramienta, lea el archivo de datos JSON en la clase de herramientas y realice llamadas recursivas:
public static string importjson (String fullFileName, string jsonType, codificación de cadena, httpservletRequest) lanza la excepción {// json conversión a la clase de la entidad referencia: http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.htmlstring scriete = ""; ""; "; // Eliminar elementos vacíos string parentid = jsondata.substring (jsondata.indexof ("/" id/":")+5); parentid = parentid.substring (0, parentid.indexof (",")). Trim (); parentId = parentId.RepLace ("/" "," "); logger.info (" root id == "+" "" jsondata.substring (jSondata.Indexof ("/" name/":")+7); parentName = parentName.substring (0, parentName.indexof (",")). trim (); parentName = parentName.Replace ("/", ""); logger.info ("nombre raíz =="+"); jSondata.substring (jsondata.indexof ("/" elementos/":")+8, jsondata.lastIndexof ("}")); rootData = jsondata.substring (jsondata.indexof ("[" [")+1, jsondata.lastIndexof ("])); // el Id y el nombre de los diferentes Jsons se reemplazan y se reemplazan y son diferenciados y son diferentes. sub_id and subname to match the class attributes of JsonItem// It is convenient to handle uniformly after replacement 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 ("industrial_id", "sub_id"); rootData = rootData.replace ("industria", "sub_name"); rootData.replace ("sub_profession", "sub_name"); rootData = rootData.Replace ("profesor_id", "sub_id"); rootData = rootData.replace ("profesión", "sub_name"); // convertir rootData en arrayData = "[" + " +"] "; thy {sub_name"); // Convertir RootData a arrayData = "[" + "] "D: /jSondata.txt", "UTF-8"); // Guardar en el disco para verificar si la conversión de cadenas es correcta} Catch (Exception Ex) {} JSonArray JSonArray = JSonArray.FromObject (RootData); Object [] OS = JSONArray.ToArray (); JSONITITEM [] items = (JSONItem []) JSONEM Jsonitem.class); saveJsonent (jsontype, parentId, parentName, "-1", nuevo largo (1)); DealJson (items, ParentId, JSONTYPE, New Long (1)); return sreturn;} private static void savoDJSONEN {logger.info (jsontype+"/"+jsonid+"/"+jsonname+"/"+parentid+"/"+string.valueOf (nivelido)); commjSondata ent = nuevo CommjSondata (); ent.setJsonType (jsonType); ent.setJsonCode (jsonid); ent.setJsonName (jsonname); ent.setrowid (stringUtil.getuUid ()); ent.setParentCode (parentId); ent.setLevelid (nivelado); iDbsupportsEvice Service = = (IDBSupportService) ServiceLocator.getBean ("IDBSupportService3"); Service.SaveOrupdate (ent);} private static string trastJson (jsonItem [] jsonitem, string parentId, string jsontype, nivel largo) {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 ()); intente {saveJSONENT (jsontype, ent.getSub_id (), ent.getSub_name (), parentid, nivel+1);} Catch (excepción (excepción ex) {Ex.PrintStackTrace ();} if (ent.getItems ()! = NULL) {// System.out.println ("Número de subitems: "+ent.getItems (). Longitud); DealJson (ent.getItems (), ent.getSub_id (), jsontype, nivel+1);} else {// system.out.println (" ¡No hay niños ");}}} // Esta función devuelve scripurn;}Datos de muestra (parte):
{"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": "Distrito de Dongcheng", "sub_id": "2001001000"}, {"sub_city": "distrito xicheng", "sub_id": "2001002000"}, {"sub_city": "distrito de chaoyang", "sub_id": "2001006000"}, {"sub_city": "n. Distrito "," Sub_id ":" 2001007000 "}, {" Sub_city ":" Distrito de Shijingshan "," Sub_id ":" 2001008000 "}, {" Sub_city ":" Distrito Haidiano "," Sub_id ":" 2001009000 "}, {" sub_city: "Mentugeou Distrito "," sub_id ":" 2001010000 "}, {" sub_city ":" distrito fangshan "," sub_id ":" 2001011000 "}, {" s ub_city ":" distrito tongzhou "," sub_id ":" 2001012000 "}, {" sub_city: "shunyii Distrito "," Sub_id ":" 2001013000 "}, {" Sub_city ":" Distrito Changping "," Sub_id ":" 2001014000 "}, {" Sub_city ":" Distrito Daxing "," Sub_id ":" 2001015000 "}, {" Sub_ City: "Huairou Distrito "," sub_id ":" 2001016000 "}, {" sub_city ":" distrito pinggu "," sub_id ":" 2001017000 "}, {" sub_city ":" yanqing condado "," sub_id ":" 2001018000 "}, {" sub_city: "miiyun Condado "," sub_id ":" 2001019000 "}]}, {" ciudad ":" tianjin city "," city_id ":" 1002000000 "," elementos ": [{" sub_city ":" hising distrito "," sub_id ":" 2002001000 "}Lo anterior es la implementación del procesamiento de datos complejos JSON, que le presenta el editor, y los datos de la estructura del árbol JSON se convierten en objetos Java y se almacenan en la base de datos.