JSON複雑データ処理のJsonツリー構造データをJavaオブジェクトに転送してデータベースに格納する実装
7315 ワード
ウェブサイトの開発では、都市を選択するときにポップアップされる省市県選択インタフェースなど、カスケードデータの展示によく遭遇します.多くのフロントエンドスタッフは、データベースから省・市・県のデータを取得するのではなく、JSONから取得することに慣れています.では、省・市・県のいずれかの都市を選択し、データベースに格納するには選択した都市のコードを格納する必要がある.したがって、JSONデータ(一般的にjavascriptスクリプトに格納されている)構造をすべてデータベースにインポートできる機能が必要です.
JSONの特徴は,階層構造をサポートし,配列表現をサポートするオブジェクトである.次の例では、JSONの省・市・県のデータをデータベースに保存する方法を説明します.実現原理は非常に簡単です.JSONのjavaツールパッケージAPIを利用して、階層のJSONオブジェクト配列を再帰的にJavaオブジェクト配列に変換し、データベースに保存することです.
実装手順は次のとおりです.
(一)まずJsonItemエンティティークラスを定義します.
(二)ツールクラスを定義し、ツールクラスでJsonデータファイルを読み込み、再帰呼び出しを行う.
サンプルデータ(部分):
以上、編集者がご紹介したJSON複雑データ処理のJsonツリー構造データをJavaオブジェクトに転送してデータベースに格納する実装について説明します
JSONの特徴は,階層構造をサポートし,配列表現をサポートするオブジェクトである.次の例では、JSONの省・市・県のデータをデータベースに保存する方法を説明します.実現原理は非常に簡単です.JSONのjavaツールパッケージAPIを利用して、階層のJSONオブジェクト配列を再帰的にJavaオブジェクト配列に変換し、データベースに保存することです.
実装手順は次のとおりです.
(一)まず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 getSub_id() {
return sub_id;
}
public void 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;
}
}
(二)ツールクラスを定義し、ツールクラスでJsonデータファイルを読み込み、再帰呼び出しを行う.
public static String importJson(String fullFileName,String jsonType,String encoding,HttpServletRequest request) throws Exception
{
//Json :http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html
String sReturn = "";
String jsonData = "";
try
{
jsonData = FileUtil.getTextFileContent(fullFileName, encoding);
}
catch(Exception ex)
{
sReturn =" Json !";
}
// rootId
//logger.info("");
jsonData = jsonData.replace("\"items\":\"\"", ""); // items
String parentId = jsonData.substring(jsonData.indexOf("\"id\":")+5);
parentId = parentId.substring(0,parentId.indexOf(",")).trim();
parentId = parentId.replace("\"", "");
logger.info("root id=="+parentId);
String parentName = jsonData.substring(jsonData.indexOf("\"name\":")+7);
parentName = parentName.substring(0,parentName.indexOf(",")).trim();
parentName = parentName.replace("\"", "");
logger.info("root Name=="+parentName);
String rootData = jsonData.substring(jsonData.indexOf("\"items\":")+8,jsonData.lastIndexOf("}"));
rootData = jsonData.substring(jsonData.indexOf("[")+1,jsonData.lastIndexOf("]"));
// json id,name , sub_id,subname JsonItem
//
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("industry_id", "sub_id");
rootData = rootData.replace("industry", "sub_name");
rootData = rootData.replace("sub_profession", "sub_name");
rootData = rootData.replace("profession_id", "sub_id");
rootData = rootData.replace("profession", "sub_name");
// rootData array
rootData = "[" + rootData + "]";
try
{
FileUtil.str2file(rootData, "d:/jsonData.txt", "utf-8");//
}
catch(Exception ex)
{
}
JSONArray jsonArray = JSONArray.fromObject(rootData);
Object[] os = jsonArray.toArray();
JsonItem[] items = (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) throws Exception
{
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);
IDBSupportService service = (IDBSupportService)ServiceLocator.getBean("IDBSupportService3");
service.saveOrUpdate(ent);
}
private static String dealJson(JsonItem[] jsonItem,String parentId,String jsonType,Long level)
{
String sReturn = "";
if(jsonItem!=null&&jsonItem.length>0)
{
for(int i=0;i
サンプルデータ(部分):
{
"name": " ",
"id": "0000000000",
"description": " ",
"modified": "2012 08 ",
"copyright": "http://www.chongdeyi.com/",
"items": [
{
"city": " ",
"city_id": "1001000000",
"items": [
{
"sub_city":" ",
"sub_id":"2001001000"
},
{
"sub_city":" ",
"sub_id":"2001002000"
},
{
"sub_city":" ",
"sub_id":"2001006000"
},
{
"sub_city":" ",
"sub_id":"2001007000"
},
{
"sub_city":" ",
"sub_id":"2001008000"
},
{
"sub_city":" ",
"sub_id":"2001009000"
},
{
"sub_city":" ",
"sub_id":"2001010000"
},
{
"sub_city":" ",
"sub_id":"2001011000"
},
{
"sub_city":" ",
"sub_id":"2001012000"
},
{
"sub_city":" ",
"sub_id":"2001013000"
},
{
"sub_city":" ",
"sub_id":"2001014000"
},
{
"sub_city":" ",
"sub_id":"2001015000"
},
{
"sub_city":" ",
"sub_id":"2001016000"
},
{
"sub_city":" ",
"sub_id":"2001017000"
},
{
"sub_city":" ",
"sub_id":"2001018000"
},
{
"sub_city":" ",
"sub_id":"2001019000"
}]
},{
"city": " ",
"city_id": "1002000000",
"items": [
{
"sub_city":" ",
"sub_id":"2002001000"
}
以上、編集者がご紹介したJSON複雑データ処理のJsonツリー構造データをJavaオブジェクトに転送してデータベースに格納する実装について説明します