No desenvolvimento de sites, a exibição de dados em cascata é frequentemente encontrada, como a interface de seleção provincial, municipal e do condado que aparece ao escolher uma cidade. Muitos produtores de front-end estão acostumados a obter dados provinciais, municipais e municipais da JSON, e não de bancos de dados. Então, se uma cidade em uma província, cidade e município for selecionada, o código da cidade selecionado precisa ser armazenado no banco de dados. Portanto, é necessária uma função para importar todos os dados JSON (geralmente armazenados em scripts JavaScript) no banco de dados.
O JSON é caracterizado por apoiar estruturas hierárquicas e apoiar representações de matrizes. O exemplo a seguir introduz como salvar dados provinciais, municipais e municipais da JSON em um banco de dados. O princípio da implementação é muito simples. É para usar a API do Java Toolkit da JAVA para converter a matriz de objetos JSON hierárquica em uma matriz de objetos Java através da recursão e salvá -la no banco de dados.
As etapas de implementação são:
(A) Primeiro defina uma classe de entidade Jsonitem:
pacote org.openjweb.core.entity; public class Jsonitem {private string sub_id; private string sub_name; private jsoniTem [] itens; public jsonitem [] getItems () {itens de retorno;} public stringtems (jsonitem [] itens) {this.items = itens;}; 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 uma classe de ferramentas, leia o arquivo de dados JSON na classe de ferramentas e faça chamadas recursivas:
public Static String Importjson (String FullFileName, String jsonType, String Encoding, HttpServletRequest Request) lança exceção {// JSON Conversão para entidade. ""; tente {jsondata = FILEUTIL.GETTEXTFILECONTENT (FullFileName, Encoding);} Catch (Exceção ex) {SRETURN = "LEITA JSON FILD FAILE!";} // Get Rootid // Logger.info (""); // Remova itens vazios String parentid = jsondata.substring (jsondata.indexOf ("/" id/":")+5); parentid = parentid.substring (0, parentid.indexof (","). jsondata.substring (jsondata.indexOf ("/" name/":")+7); pIlername = parentname.substring (0, parentname.indexof (","). TRIM (); jsondata.substring (jsondata.indexOf ("/" itens/":")+8, jsondata.lastIndexof ("}")); rootdata = jsondata.substring (jsondata.indexOf (")+1, jsondata.LastInDoxof (JSONDATA.INDEXOF (") 1; Eles são substituídos por sub_id e subnome para corresponder aos atributos da classe de jsonitem // é conveniente lidar uniformemente após a substituição 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 ("indústria_id_id_id (" sub_id "); rootata = root = root = root = rootatata = rootdata.replace (" indústria_id_id "," sub_id "); "Sub_name"); rootdata = rootdata.replace ("sub_profession", "sub_name"); rootdata = rootdata.replace ("Profession_id", "Sub_id"); + rootdata = rootdata.replace ("Profession", "root"); "]"; try {fileUtil.str2file (rootdata, "d: /jsondata.txt", "utf-8"); // salve no disco para verificar se a conversão da string está correta} catch (excepção ex) {} JSONArray JsonArray = jsonArray.FromObject (rootData); (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) lança Exceção {Logger.info (JSONTYPE+"/"+JSONID+"/"+JSONNAME+"/"+ParentId+"/"+String.valueof (LevelId)); CommjSondata ent = novo Commjsondata (); ent.setjsonType (JSONTYPE); ent.SetJSONCODE (JSONID); ENT.SETJSONNAME (JSONNAME); ENT.SETROWID (StringUtil.GetUUID ()); Ent.setParentCode (ParentId); Ent.SetLevelid (niveRId); (IdbsupportService) serviceLocator.getBean ("IdbsupportService3"); Service.SaveorUpdate (Ent);} private Static String Dealjson (jsonitem [] JSONITEM, String parentid, String JSONTYPE, LONGE) {String srunturn = "; se (se i = 0; i <jsonitem.length; i ++) {jsonitem ent = jsonitem [i]; // system.out.println (ent.getsub_id ()); // system.out.println (ent.getsub_name ()); tente {savejsonent (jsonype, ent.getsub_id (), ent.getsub_name (), parentid, nive 1); ex) {ex.printStackTrace ();} if (ent.getItems ()! = null) {// System.out.println ("número de subitems: "+ent.getItems (). comprimento); revendedjson (ent.getItems (), ent.getsub_id (), jsonntype, nível+1);} else {// system.out.println (" sem crianças! ");Dados de amostra (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": "Dongcheng District", "Sub_id": "2001001000"}, {"sub_city": "Xicheng District", "Sub_id": "2001002000": {"Sub_City": "Chaoyang District", "Sub_id" ": 200100": "200100": "200100": {"Sub_City": "Chaoyang", "Sub_id" ": 200100": 200100 ": 200100": {" Distrito "," sub_id ":" 2001007000 "}, {" sub_city ":" Shijingshan District "," Sub_id ":" 2001008000 "}, {" sub_city ":" distrito haidiano "," sub_id ":" 2001009u ""}, {"sub_idade": "MentoMug": "2001009ou" "}, {" Sub_ity ":" Distrito "," sub_id ":" 2001010000 "}, {" sub_city ":" Fangshan District "," Sub_id ":" 2001011000 "}, {" s ub_city ":" tongzhou distrito "," sub_id ":" 2001012000 "}, {" sub -_idade ":" Distrito "," sub_id ":" 2001013000 "}, {" sub_city ":" gangping distrito "," sub_id ":" 2001014000 "}, {" sub_city ":" daxing distrit Distrito "," sub_id ":" 2001016000 "}, {" sub_city ":" distrito de pinggu "," sub_id ":" 2001017000 "}, {" sub_city ":" yanqing county "," sub_id ":" 2001018000 "}, {" sub_6 Condado "," Sub_id ":" 2001019000 "}]}, {" City ":" Tianjin City "," City_id ":" 1002000000 "," Itens ": [{" Sub_City ":" Heping District "," Sub_id ":" 2002001000 "}}":O exposto acima é a implementação do Processamento de Dados Complexo JSON, que é introduzido a você pelo editor, e os dados da estrutura da árvore JSON são convertidos em objetos Java e armazenados no banco de dados.