package com.anjoyo.utils;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
import com.anjoyo.info.CommentsInfo;
import com.anjoyo.info.FoodInfo;
import com.anjoyo.info.ShopInfo;
import com.anjoyo.info.SignInfo;
/**
* Json字符串解析工具类
* @author 苦涩
*/
public class MyJson {
private ArrayList<SignInfo> SignList = new ArrayList<SignInfo>();
private ArrayList<CommentsInfo> CommentsList = new ArrayList<CommentsInfo>();
private ArrayList<FoodInfo> FoodList = new ArrayList<FoodInfo>();
// 解析商铺列表
public List<ShopInfo> getShopList(String value) {
List<ShopInfo> list = null;
try {
JSONArray jay = new JSONArray(value);
list = new ArrayList<ShopInfo>();
for (int i = 0; i < jay.length(); i++) {
JSONObject job = jay.getJSONObject(i);
ShopInfo info = new ShopInfo();
info.setSid(job.getString("sid"));
info.setSname(job.getString("sname"));
info.setStype(job.getString("stype"));
info.setSaddress(job.getString("saddress"));
info.setSnear(job.getString("snear"));
info.setStel(job.getString("stel"));
info.setStime(job.getString("stime"));
info.setSzhekou(job.getString("szhekou"));
info.setSmembercard(job.getString("smembercard"));
info.setSper(job.getString("sper"));
info.setSmoney(job.getString("smoney"));
info.setSnum(job.getString("snum"));
info.setSlevel(job.getString("slevel"));
info.setSflag_tuan(job.getString("sflag_tuan"));
info.setSflag_quan(job.getString("sflag_quan"));
info.setSflag_ding(job.getString("sflag_ding"));
info.setSflag_ka(job.getString("sflag_ka"));
info.setLongitude(job.getString("longitude"));
info.setLatitude(job.getString("latitude"));
info.setSintroduction(job.getString("sintroduction"));
info.setSdetails(job.getString("sdetails"));
info.setStips(job.getString("stips"));
info.setSflag_promise(job.getString("sflag_promise"));
info.setIname(job.getString("iname"));
list.add(info);
}
} catch (JSONException e) {
}
return list;
}
// 被解析的json以及回调接口实现
public void getShopDetail(String mJson, DetailCallBack callback) {
try {
JSONObject job = new JSONObject(mJson);
String result = job.getString("result");
Log.e("result", "result:" + result);
if (result.equalsIgnoreCase("ok")) {
Log.e("result", "result:" + result);
String signValue = job.getString("sign");
String commentsValue = job.getString("comments");
String foodValue = job.getString("food");
JSONArray signArray = new JSONArray(signValue);
JSONArray commentsArray = new JSONArray(commentsValue);
JSONArray foodArray = new JSONArray(foodValue);
for (int i = 0; i < foodArray.length(); i++) {
JSONObject sJob = foodArray.getJSONObject(i);
FoodInfo info = new FoodInfo();
info.setFoodid(sJob.getString("foodid"));
info.setSid(sJob.getString("sid"));
info.setFoodname(sJob.getString("foodname"));
info.setFoodphotoid(sJob.getString("foodphotoid"));
FoodList.add(info);
}
for (int i = 0; i < commentsArray.length(); i++) {
JSONObject sJob = commentsArray.getJSONObject(i);
CommentsInfo info = new CommentsInfo();
info.setCid(sJob.getString("cid"));
info.setSid(sJob.getString("sid"));
info.setPid(sJob.getString("pid"));
info.setName(sJob.getString("name"));
info.setTime(sJob.getString("time"));
info.setComments(sJob.getString("comments"));
info.setClevel(sJob.getString("clevel"));
info.setKouweilevel(sJob.getString("kouweilevel"));
info.setHuanjinglevel(sJob.getString("huanjinglevel"));
info.setFuwulevel(sJob.getString("fuwulevel"));
info.setCpermoney(sJob.getString("cpermoney"));
CommentsList.add(info);
}
for (int i = 0; i < signArray.length(); i++) {
JSONObject sJob = signArray.getJSONObject(i);
SignInfo info = new SignInfo();
info.setSignid(sJob.getString("signid"));
info.setSid(sJob.getString("sid"));
info.setPid(sJob.getString("pid"));
info.setName(sJob.getString("name"));
info.setSigncontent(sJob.getString("signcontent"));
info.setSignlevel(sJob.getString("signlevel"));
info.setSignimage(sJob.getString("signimage"));
info.setSigntime(sJob.getString("signtime"));
SignList.add(info);
}
Log.e("result", "SignList:" + SignList.size() + " CommentsList"
+ CommentsList.size() + " FoodList" + FoodList.size());
callback.getList(SignList, CommentsList, FoodList);
} else {
callback.getList(SignList, CommentsList, FoodList);
}
} catch (JSONException e) {
callback.getList(SignList, CommentsList, FoodList);
}
}
//签到信息的解析
public List<SignInfo> getSignList(String value) {
List<SignInfo> list = new ArrayList<SignInfo>();
try {
JSONArray jay = new JSONArray(value);
for (int i = 0; i < jay.length(); i++) {
JSONObject job = jay.getJSONObject(i);
SignInfo info = new SignInfo();
info.setName(job.getString("name"));
info.setSigncontent(job.getString("signcontent"));
info.setSignimage(job.getString("signimage"));
info.setSignlevel(job.getString("signlevel"));
info.setSigntime(job.getString("signtime"));
list.add(info);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
public interface DetailCallBack {
public void getList(ArrayList<SignInfo> SignList,
ArrayList<CommentsInfo> CommentsList,
ArrayList<FoodInfo> FoodList);
}
}
List<ShopInfo> newList = myJson.getShopList(result);
for (ShopInfo info : newList) {
list.add(info);
}
如果是调用接口
// 解析数据
myJson.getShopDetail(result, new DetailCallBack() {
@Override
public void getList(
ArrayList<SignInfo> SignList,
ArrayList<com.anjoyo.info.CommentsInfo> CommentsList,
ArrayList<FoodInfo> FoodList) {
// 获取解析回调数据
ShopDetailsActivity.this.SignList = SignList;
ShopDetailsActivity.this.CommentsList = CommentsList;
ShopDetailsActivity.this.FoodList = FoodList;
// 显示界面
if (ShopDetailsActivity.this.SignList.size() > 0) {
mshop_details_qiandaoqiang
.setVisibility(View.VISIBLE);
SignInfo signinfo = SignList.get(SignList
.size() - 1);
mshop_qiandaoqiang_top.setText("签到留言墙(共"
+ SignList.size() + "人:");
mshop_details_qiandaoqiang_txt.setText(signinfo
.getName());
mshop_details_qiandaoqiang_time
.setText(signinfo.getSigntime());
mshop_details_qiandaoqiang_cishu.setText("共签到"
+ signinfo.getSignlevel() + "次");
}
if (ShopDetailsActivity.this.CommentsList.size() > 0) {
mshop_details_dianping
.setVisibility(View.VISIBLE);
CommentsInfo commentsinfo = CommentsList
.get(CommentsList.size() - 1);
mshop_dianping_top.setText("点评(共"
+ CommentsList.size() + ")条:");
mshop_details_dianping_name
.setText(commentsinfo.getName());
mshop_details_dianping_txt.setText(commentsinfo
.getComments());
mshop_details_dianping_time
.setText(commentsinfo.getTime());
int slevel = Integer.valueOf(commentsinfo
.getClevel());
switch (slevel) {
case 0:
mshop_details_dianping_star
.setImageResource(R.drawable.star0);
break;
case 1:
mshop_details_dianping_star
.setImageResource(R.drawable.star1);
break;
case 2:
mshop_details_dianping_star
.setImageResource(R.drawable.star2);
break;
case 3:
mshop_details_dianping_star
.setImageResource(R.drawable.star3);
break;
case 4:
mshop_details_dianping_star
.setImageResource(R.drawable.star4);
break;
case 5:
mshop_details_dianping_star
.setImageResource(R.drawable.star5);
break;
}
}
if (ShopDetailsActivity.this.FoodList.size() > 0) {
mshop_details_tuijian
.setVisibility(View.VISIBLE);
String foodtext = "";// 网友推荐食物
for (int i = 0; i < FoodList.size(); i++) {
foodtext += FoodList.get(i).getFoodname()
+ " ";
}
mshop_details_tuijian_txt.setText(foodtext);
}
// 添加网友推荐的食物
// 添加点评信息
}
});