Gson数据的解析问题

今天写一个东西,用HttpPost到服务器端获取json数据,然后客户端用Gson解析显示,就是这么一个东西,居然还出错了。

   和大部分人一样,在客户端定义一个JsonEntity实体类,我很快就就把data字段定义成为一个String类型的了。然后解析的时候悲剧了,

   搞了半天,把所有的json数据打印在控制台一一对应,突然,我勒个去,返回的json数据是这样的  "data":[{xxx:xxx}] 看清了哦,后面没有双引号,不是String类型啊,是一个数组类型。

 

  怎么办,改了哦。把String类型改为Object类型,再把它Gson.toJson(data),再用Gson.fromJson(data)就可以转为你想要的实体类型了哦。

 

JsonEntity实体类

 


 
  1.  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. import com.zgan.jsondata.weather;  
  7.   
  8. public class JsonEntity implements Serializable{  
  9.   
  10.     private static final long serialVersionUID = 1L;  
  11.   
  12.     private int status;  
  13.     private String msg;  
  14.     private Object data;      
  15.     private int total;  
  16.       
  17.   
  18.     public Object getData() {  
  19.         return data;  
  20.     }  
  21.   
  22.   
  23.     public void setData(Object data) {  
  24.         this.data = data;  
  25.     }  
  26.   
  27.   
  28.     public int getStatus() {  
  29.         return status;  
  30.     }  
  31.   
  32.   
  33.     public void setStatus(int status) {  
  34.         this.status = status;  
  35.     }  
  36.   
  37.   
  38.     public String getMsg() {  
  39.         return msg;  
  40.     }  
  41.   
  42.   
  43.     public void setMsg(String msg) {  
  44.         this.msg = msg;  
  45.     }  
  46.   
  47.   
  48.   
  49.   
  50.     public int getTotal() {  
  51.         return total;  
  52.     }  
  53.   
  54.   
  55.     public void setTotal(int total) {  
  56.         this.total = total;  
  57.     }  
  58.   
  59.   
  60.     public static long getSerialversionuid() {  
  61.         return serialVersionUID;  
  62.     }  
  63.   
  64.   
  65.     @Override  
  66.     public String toString() {  
  67.         return "JsonEntity [status=" + status + "data=" + data + "msg="  
  68.                 + msg + ", total=" + total + "]";  
  69.     }  
  70.   
  71. }  
  72.  
 

中间多一次转化程序:


 
  1. public static Object getData(JsonEntity jsonEntity,Type type)  
  2.     {  
  3.         String jstr=GsonUtil.getGson().toJson(jsonEntity.getData());  
  4.         return AppConstants.gson.fromJson(jstr,type);  
  5.     }

 

最后可以和原来一样的取用了:


 
  1. list=(List<weather>) GsonUtil.getData(jsonEntity,AppConstants.type_weatherList);

 

源代码:http://download.csdn.net/detail/owner_hzh/6746477

posted @ 2013-12-20 17:29  owner_hzh  阅读(810)  评论(0编辑  收藏  举报


作者:Owner
邮箱:owners.hzh@gmail.com
出处:http://www.cnblogs.com/owner/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Owner's blog