【転載】プレイフレーム2.0実戦(6)-json
6466 ワード
現在のプロジェクトの多くはデータで駆動されています.これにより、複数のデバイスの呼び出しに適応することができる.ここではjsonフォーマットが一般的です.公式ドキュメントでは、jsonデータを変換する方法も説明されています.(www.playframework.org/documentation/2.0.2/JavaJsonRequests)ここでは、特別な状況に関する処理をもっと紹介します.次のようなデータがあります.
json配列のフィールドには、別の配列が含まれています.私たちはいくつかの方法で処理しなければなりません.
//出力結果のコンテナArrayList jsonList=new ArrayList()を作成する.
//データ層から取得するデータList catalogList=GdouCatalog.GetCatalogByID(catalogID);
//得られたデータを巡るfor(GdouCatalog item:catalogList)
{
Map
node.put("catalogID",item.catalogID);
node.put("catalogName",item.name);
node.put("intro",item.intro);
node.put("website",item.website);
node.put("logoImg",item.logoImg);
node.put("titileImg",item.titleImg);
node.put("introImg",item.introImg);
//二次遍歴
ArrayList jsonMobileList= new ArrayList();
for(GdouMobileItem mobile:item.itemList)
{
Map
GdouMobile mobileInfo=GdouMobile.GetMobileInfo(mobile.mobileID);
mobileNode.put("deviceID",mobile.mobileID);
mobileNode.put("deviceName",mobileInfo.mobileName);
mobileNode.put("menuCSS",mobileInfo.menuCSS);
mobileNode.put("showCSS",mobileInfo.showCSS);
mobileNode.put("bgCSS",mobileInfo.bgCSS);
mobileNode.put("bgImg",mobileInfo.bgImg);
mobileNode.put("deviceImg",mobileInfo.deviceImg);
mobileNode.put("deviceCSS",mobileInfo.deviceCSS);
mobileNode.put("viewCSS",mobileInfo.viewCSS);
mobileNode.put("minCSS",mobileInfo.minCSS);
mobileNode.put("mobileID",mobile.itemID);
mobileNode.put("mobileName",mobile.name);
mobileNode.put("mobileIntro",mobile.intro);
mobileNode.put("downloadUrl",mobile.downloadUrl);
ArrayList imgList= new ArrayList();
int count=0;
for(GdouMobileImg img :mobile.imgList)
{
Map
imgNode.put("picID",img.picID);
imgNode.put("picUrl",img.picUrl);
imgNode.put("itemID",img.itemID);
imgList.add(imgNode);
if(count==0)
{
mobileNode.put("showImg",img.picUrl);
}
count++;
//jsonList.add(node);
}
mobileNode.put("imgList",imgList);
jsonMobileList.add(mobileNode);
}
node.put("mobileList",jsonMobileList);
jsonList.add(node);
}
{
"introImg": "/assets/images/main/gdouIntro.jpg",
"catalogName": " ",
"website": "http://www.gdou.com",
"catalogID": 10000,
"titileImg": "#",
"mobileList": [{ "deviceCSS": "device device_iphone", "viewCSS": "view view_iphone", "minCSS": "minimg minimg_iphone", "deviceID": 500, "mobileIntro": " ", "showImg": "/assets/images/device/iphone/gdou/1.jpg", "showCSS": "display display_iphone", "downloadUrl": null, "deviceImg": "/assets/images/device/iphone.png", "bgCSS": "phone_bg", "menuCSS": "device_item item_iphone", "imgList": [{ "itemID": "5005", "picUrl": "/assets/images/device/iphone/gdou/1.jpg", "picID": 155 }, { "itemID": "5005", "picUrl": "/assets/images/device/iphone/gdou/2.jpg", "picID": 156 }, { "itemID": "5005", "picUrl": "/assets/images/device/iphone/gdou/3.jpg", "picID": 157 }, { "itemID": "5005", "picUrl": "/assets/images/device/iphone/gdou/4.jpg", "picID": 158 }, { "itemID": "5005", "picUrl": "/assets/images/device/iphone/gdou/5.jpg", "picID": 159 }], "deviceName": "iphone", "mobileID": 5005, "mobileName": " (iphone)", "bgImg": "/assets/images/device/phone_bg.jpg" },
json配列のフィールドには、別の配列が含まれています.私たちはいくつかの方法で処理しなければなりません.
//出力結果のコンテナArrayList jsonList=new ArrayList()を作成する.
//データ層から取得するデータList catalogList=GdouCatalog.GetCatalogByID(catalogID);
//得られたデータを巡るfor(GdouCatalog item:catalogList)
{
Map
node.put("catalogID",item.catalogID);
node.put("catalogName",item.name);
node.put("intro",item.intro);
node.put("website",item.website);
node.put("logoImg",item.logoImg);
node.put("titileImg",item.titleImg);
node.put("introImg",item.introImg);
//二次遍歴
ArrayList jsonMobileList= new ArrayList();
for(GdouMobileItem mobile:item.itemList)
{
Map
GdouMobile mobileInfo=GdouMobile.GetMobileInfo(mobile.mobileID);
mobileNode.put("deviceID",mobile.mobileID);
mobileNode.put("deviceName",mobileInfo.mobileName);
mobileNode.put("menuCSS",mobileInfo.menuCSS);
mobileNode.put("showCSS",mobileInfo.showCSS);
mobileNode.put("bgCSS",mobileInfo.bgCSS);
mobileNode.put("bgImg",mobileInfo.bgImg);
mobileNode.put("deviceImg",mobileInfo.deviceImg);
mobileNode.put("deviceCSS",mobileInfo.deviceCSS);
mobileNode.put("viewCSS",mobileInfo.viewCSS);
mobileNode.put("minCSS",mobileInfo.minCSS);
mobileNode.put("mobileID",mobile.itemID);
mobileNode.put("mobileName",mobile.name);
mobileNode.put("mobileIntro",mobile.intro);
mobileNode.put("downloadUrl",mobile.downloadUrl);
ArrayList imgList= new ArrayList();
int count=0;
for(GdouMobileImg img :mobile.imgList)
{
Map
imgNode.put("picID",img.picID);
imgNode.put("picUrl",img.picUrl);
imgNode.put("itemID",img.itemID);
imgList.add(imgNode);
if(count==0)
{
mobileNode.put("showImg",img.picUrl);
}
count++;
//jsonList.add(node);
}
mobileNode.put("imgList",imgList);
jsonMobileList.add(mobileNode);
}
node.put("mobileList",jsonMobileList);
jsonList.add(node);
}