zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Flash、Ajax各自的优缺点,在使用中如何取舍?
    纯CSS气泡框实现方法探究
    CSS里padding和margin的区别是什么?
    img图片标签alt和title属性的区别
    JS中都有哪些数据类型呢?
    剑指offer---按只字形顺序打印二叉树
    剑指offer---序列化二叉树
    剑指offer---二叉树的下一个结点
    剑指offer---二叉树的深度
    剑指offer---平衡二叉树
  • 原文地址:https://www.cnblogs.com/owner/p/3484267.html
Copyright © 2011-2022 走看看