ウェブサイトの開発では、都市を選択するときにポップアップする州、市、郡の選択インターフェースなど、カスケードデータディスプレイが発生することがよくあります。多くのフロントエンドの生産者は、データベースからではなく、JSONから地方、市、および郡のデータを取得することに慣れています。次に、州、都市、郡の都市が選択されている場合、選択した都市のコードをデータベースに保管する必要があります。したがって、すべてのJSONデータ(通常はJavaScriptスクリプトに保存されている)構造をデータベースにインポートするために関数が必要です。
JSONは、階層構造をサポートし、配列表現をサポートすることを特徴としています。次の例では、JSONの州、市、郡のデータをデータベースに保存する方法を紹介します。実装の原則は非常に簡単です。 JSONのJava Toolkit APIを使用して、階層JSONオブジェクトアレイを再帰を介してJavaオブジェクトアレイに変換し、データベースに保存することです。
実装手順は次のとおりです。
(a)最初に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 getub_id( 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;}}}}}}(2)ツールクラスを定義し、ツールクラスのJSONデータファイルを読み、再帰的な呼び出しを行います。
public static string importjson(string fullfilename、string jsontype、string encoding、httpservletrequest request)throws excement {// json Conversion to Entityクラス参照:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.htmlstring = " ""; try {jsondata = fileutil.getTextFileContent(fullfileName、encoding);} catch(Exception ex){sreturn = "JSONファイルの読み取り失敗!";} // get rootid // logger.info( ""); jsondata = jsondata.replace.replace。 //空のアイテムを削除しますdemainString defering jsondata.substring(jsondata.indexof( "/" name/":")+7); parentname.substring(0、parentname.indexof( "、"))。トリム(); parentname = parentname.replace( "/" "、"、 "); logger.info jsondata.substring(jsondata.indexof( "/" items/":")+8、jsondata.lastindexof( "}")); rootdata = jsondata.substring(jsondata.indexof( "[")+1、jsondata.lastindexof and fid( "); jsonitemのクラス属性に一致するようにsub_idとsubNameに置き換えられます//交換後に均一に処理するのは便利です= rootdata.replace( "city_id"、 "sub_id"); rootdata.replace( "sub_city"、 "sub_name"); rootdata = rootdata( "sub_name"); "sub_name"); rootdata = rootdata.replace( "sub_txt"、 "sub_name"); rootdata = rootdata.replace( "sub_industry"、 "sub_name"); rootdata = rootdata.replace( "astound_id"、 "sub_id"); rootdata "); "sub_name"); rootdata = rootdata.replace( "sub_profession"、 "sub_name"); rootdata = rootdata.replace( "profession_id"、 "sub_id"); rootdata = rootdata.replace( "profession"、 "sub_name"); + "]"; try {fileutil.str2file(rootdata、 "d:/jsondata.txt"、 "utf-8"); =(jsonitem [])jsonarray.toarray(jsonarray、jsonitem.class); savejsonent(jsontype、parentid、parentname、 "-1"、new long(1)); dealjson(項目、ds、jsonytype、new long(1)); return sreturn; jsonname、string parentid、long levelid)スロー例外{logger.info(jsontype+"/"+jsonid+"/"+jsonname+"/"+dartid+"/"+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); idbsupportservice = (idbsupportservice)servicelocator.getbean( "idbsupportservice3"); service.saveorupdate(ent);} private static string dealjson(jsonitem [] jsonitem、string dsurid、string jsonytype、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、leate+1); ex){ex.printstacktrace();} if(ent.getitems()!= null){// system.out.println( "number of subitems: "+ent.getitems()。length); dealjson(ent.getitems()、ent.getsub_id()、jsontype、jsontype、level+1);} else {// system.out.println(" no children! ");}}}} //サンプルデータ(パート):
{"name": "national"、 "id": "00000000000"、 "description": "chongdeyi city data"、 "modified": "" "copyright": "http://www.chongdeyi.com/"、" items ":" {"city": "beijing": "10010000" [{"sub_city": "dongcheng地区"、 "sub_id": "2001001000"}、{"sub_city": "xicheng地区"、 "sub_id": "2001002000"}、{"sub_city": "chaoyang地区"、 "sub_id": "" "feng地区 "、" sub_id ":" 2001007000 "}、{" sub_city ":" shijingshan地区 "、" sub_id ":" 2001008000 "}、{" sub_city ":" haidian地区 "、" sub_id ":" 2001009000 "}、{" sub_city ":" sub_citue地区 "、" sub_id ":" 2001010000 "}、{" sub_city ":" fangshan地区 "、" sub_id ":" 2001011000 "}、{" s ub_city ":" tongzhou地区 "、" sub_id ":" 2001012000 "}、{" sub_city ":" sub_city地区 "、" sub_id ":" 2001013000 "}、{" sub_city ":" changing district "、" sub_id ":" 2001014000 "}、{" sub_city ":" daxing District "、" sub_id ":" 2001015000 "}、{" sub_ city ":" huairou地区 "、" sub_id ":" 2001016000 "}、{" sub_city ":" pinggu District "、" sub_id ":" 2001017000 "}、{" sub_city ":" yanqing郡 "、" sub_id ":" 2001018000 "}、{" sub_city ":" Miyun郡 "、" sub_id ":" 2001019000 "}]}、{" city ":" Tianjin City "、" City_id ":" 1002000000 "、" items ":[{" sub_city ":" Heping District "、" sub_id ":" 2002001000 "}上記は、編集者によって紹介されるJSON複合データ処理の実装であり、JSONツリー構造データはJavaオブジェクトに変換され、データベースに保存されます。