当前位置: 代码迷 >> J2EE >> 怎么使用GSON转换带errorCode的List
  详细解决方案

怎么使用GSON转换带errorCode的List

热度:79   发布时间:2016-04-17 23:27:40.0
如何使用GSON转换带errorCode的List?
小弟的需求是这样的:

服务器返回的Json有两种格式:

1、正常:返回数据List,我这边要转换成BeanList
[{
"id": "1",
"title": "商品1",
"price": "10"
},
{
"id": "2",
"title": "商品2",
"price": "20"
}]

2、异常:返回错误信息
{"code":"101","msg":"参数格式错误"}

【问题】
如何使用GSON同时支持以上两种数据的转换?
------解决思路----------------------
一个返回的是对象数组,一个返回的是对象!
用Gson处理List的方法去处理单独对象应该会抛异常吧!抓住异常接着处理行吗???

------解决思路----------------------
public static void main(String args[]){
//String strJson="[{'id': '1','title': '商品1','price': '10'},{'id': '2','title': '商品2','price': '20'}]";
String strJson="{'code':'101','msg':'参数格式错误'}";
Object obj = getJsonResult(strJson);
if(obj instanceof  List){
List<Map<String,Object>> list=(List<Map<String,Object>>)obj;
System.out.println(list);
}
else{
Map<String,Object> errCode=(Map<String,Object>)obj;
System.out.println(errCode);
}


}

public static Object getJsonResult(String strJson){
Gson gson = new Gson();
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> errCode = new HashMap<String,Object>();
if(strJson.startsWith("[")){
list=gson.fromJson(strJson, list.getClass());
return list;
}
else{
errCode=gson.fromJson(strJson, errCode.getClass());
return errCode;
}

}
  相关解决方案