Code Bye

如何使用GSON转换带errorCode的List?

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

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

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

【问题】
如何使用GSON同时支持以上两种数据的转换?

可以尝试用Map<key,value>
key:一个的list,一个是errcode
Object对着这两个key对应的对象

10分
一个返回的是对象数组,一个返回的是对象!
用Gson处理List的方法去处理单独对象应该会抛异常吧!抓住异常接着处理行吗???

90分
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;
		}

	}
引用 2 楼 zxs6587 的回复:

一个返回的是对象数组,一个返回的是对象!
用Gson处理List的方法去处理单独对象应该会抛异常吧!抓住异常接着处理行吗???

嗯,实在没办法时就用这招了!


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何使用GSON转换带errorCode的List?