웹 사이트 개발에서 Cascading Data Display는 종종 도시를 선택할 때 나타나는 지방, 시립 및 카운티 선택 인터페이스와 같은 종종 발생합니다. 많은 프론트 엔드 제작자들은 데이터베이스가 아닌 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 [] 항목; public jsonitem [] getItems () {return initem;} public void setitems (jsonitem [] items) {this.it.items = items; 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) 도구 클래스를 정의하고, 도구 클래스에서 JSON 데이터 파일을 읽고, 재귀 호출을합니다.
public static string importJson (문자열 fullFilename, String JSONTYPE, String Encoding, httpservletRequest 요청) 예외 {// json Entity 클래스 참조로 변환 : http://www.cnblogs.com/hoojo/archive/2011/21/2023805.htmlstring setring = ";"; ""; try {jsondata = fileUtil.getTextFileContent (fullFilename, Encoding);} catch (Exception ex) {sreturn = "읽기 JSON 파일 실패!";} // get rootid // logger.info ( "); jsondata = jsondata.replace ("/"항목/", ","); // 빈 항목 제거 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.replace ( "/" "," "); logger.info ("root name == "+parentname); jsondata.substring (jsondata.indexof ( "/"items/":")+8, jsondata.lastindexof ( "}")); rootdata = jsondata.substring (jsondata.indexof ( "[")+1, jsondata.lastindexof ( "]"); jsonitem의 클래스 속성과 일치하는 sub_id 및 서브 이름 // 대체 후 rootdata = rootdata.replace ( "city_id", "sub_id"); rootdata = rootdata.replace ( "sub_city", "sub_name"); rootdata = rootdata.replace ( "city"); "Sub_name"); rootdata.replace ( "sub_txt", "sub_name"); rootdata = rootdata.replace ( "sub_industry", "sub_name"); rootdata = rootdata.replace ( "industry_id", "sub_id"); rootdata = rootdata.replace ( "Industry", "sub_name"); "sub_name"); rootData = rootData.replace ( "profession_id", "sub_id"); rootData = rootData.replace ( "profession", "sub_name"); // rootData를 배열로 변환하여 rootData를 변환합니다. "utf-8"); // 문자열 변환이 올바른지 확인하기 위해 디스크에 저장} catch (예외) {} jsonarray jsonarray = jsonarray.fromobject (rootdata); object [] os = jsonarray.toArray (); jsonitem.class); savejsonent (jsontype, parentid, parentname, "-1", new long (1)); Dealjson (항목, parentid, jsontype, new long (1)); return seturn;} 개인 정적 void savejsonent (string jsontype, string jsonname, string). {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.setlevelid (levelid); idbspportservice service = (idbsupportservice) servicelocator.getbean ( "idbsupportservice3"); service.saveorupdate (ent);} private static string dealjson (jsonitem [] jsonitem, String parentid, jsontype, long level) {string seturn = ""; if (jsonitem! = jull.) 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+1);}; ex) {ex.printstacktrace ();} if (ent.getItems ()! = null) {// system.out.println ( "subitems :"+ent.getItems (). length); dealjson (ent.getItems (), ent.getsub_id (), jsontype, level+1); children! ");}}} //이 함수는 sreturn;}을 반환합니다.샘플 데이터 (부품) :
{ "Name": "National", "ID": "00000000000", "Description": "Chongdeyi City Data", "Modified": "Copyright", "Copyright": "http://www.chongdeyi.com/" :"{ "City": "City_id": "100100000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000100010010001010101010101010101까지": " [{ "sub_city": "dongcheng District", "sub_id": "2001001000"}, { "sub_city": "Xicheng District", "sub_id": "2001002000"}, { "sub_city": "Chaoyang District", "sub_id": "2001006000", { "sub_city": "Sub_city" 지구 ","sub_id ":"2001007000 "}, {"sub_city ":"shijingshan District ","sub_id ":"2001008000 "}, {"sub_city ":"sub_id ":"2001009000 "}, {"sub_city ":"mentougou 지구 ","sub_id ":"2001010000 "}, {"sub_city ":"Fangshan District ","sub_id ":"2001011000 "}, {"sub_city ":"sub_id ":"2001012000 "}, {Sub_city": "Shunyi 지구 ","sub_id ":"2001013000 "}, {"sub_city ":"sub_city ","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 ":"sub_id ":"2001018000 "}, {"sub_city ":"miyun 카운티 ","sub_id ":"2001019000 "}]}, {"city ":"tianjin city ","city_id ":"1002000000 ","항목 ": [{"sub_city ":"sub_id ":"2002001000 "}위의 것은 편집기가 소개하는 JSON 복잡한 데이터 처리의 구현이며, JSON 트리 구조 데이터는 Java 객체로 변환되어 데이터베이스에 저장됩니다.