zoukankan      html  css  js  c++  java
  • Android笔记之Gson数据解析

    服务器返回客户端的数据有两种:XML,Json数据(轻量级)。

    Json本质上是String。

    下面讲解在服务器生成Gson数据以及在客户端解析Gson数据的过程:

    1、服务器端返回Gson数据:

    List<String> list = service.getMsg();
    
    out.print(gsonutlis.createGsonString(list));

    gsonutlis.java代码:

    public class gsonutlis {
    
        public static String createGsonString(Object value){
            Gson gson=new Gson();
            String result=gson.toJson(value);
            return result;
            
        }
    }

    2、客户端接收Gson数据并解析:

            String result = HttpClientUtils.sendHttpclientGet(null,
                    CommonUrl.Get_Msg, CommonUrl.eccode);
            List<String> list = GsonUlits.getListFromGson(result);

    GsonUlits.java

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.google.gson.Gson;
    import com.google.gson.reflect.TypeToken;
    import com.znufe.service.CommonUrl;
    
    public class GsonUlits {
    
        // 从一个json获取一个T对象并返回T,如一个用户的基本信息
        public static <T> T getObjectFromJson(String jsonString, Class<T> cls) {
            // import java.lang.reflect.Type;
            // import com.google.gson.reflect.TypeToken;
            T t = null;
            try {
                Gson gson = new Gson();
                t = gson.fromJson(jsonString, cls);
            } catch (Exception e) {
                // TODO: handle exception
            }
            return t;
        }
    
        // 从一个json获取一个List<T>对象并返回,如多个用户的基本信息
        public static <T> List<T> getObjectsFromJson(String jsonString, Class<T> cls) {
            List<T> list = new ArrayList<T>();
            try {
                Gson gson = new Gson();
                list = gson.fromJson(jsonString, new TypeToken<List<T>>() {
                }.getType());
            } catch (Exception e) {
                // TODO: handle exception
            }
            // TypeToken:反射机制
    
            return list;
        }
    
        public static Map<String, Object> getKeyapFromGson(String jsonString) {
            Map<String, Object> map = new HashMap<String, Object>();
            Gson gson = new Gson();
            try {
                map = gson.fromJson(jsonString,
                        new TypeToken<Map<String, Object>>() {
                        }.getType());
            } catch (Exception e) {
                // TODO: handle exception
            }
    
            return map;
    
        }
    
        // 相当与getObjectsFromJson的泛型T=String
        public static List<String> getListFromGson(String jsonString) {
            List<String> list = new ArrayList<String>();
    
            try {
                Gson gson = new Gson();
                list = gson.fromJson(jsonString, new TypeToken<List<String>>() {
                }.getType());
            } catch (Exception e) {
                // TODO: handle exception
            }
    
            return list;
    
        }
    
        public static List<Map<String, Object>> getListKeyapFromGson(
                String jsonString) {
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    
            try {
                Gson gson = new Gson();
                list = gson.fromJson(jsonString,
                        new TypeToken<List<Map<String, Object>>>() {
                        }.getType());
            } catch (Exception e) {
                // TODO: handle exception
            }
    
            return list;
    
        }
    }

    Done!

  • 相关阅读:
    9-10【H5混合实战】基于自定义WebView实现H5混合开发-3
    9-9【H5混合实战】基于定义WebView实现H5混合开发-2
    9-7【实战引用】球区入口实现
    9-5&9-6创建组件,使用组件
    9-4DAO首页大接口Dao层实现和调用-2
    9-4DAO首页大接口Dao层实现和调用-1
    9.3model层设计
    9.2熟悉接口好开发
    8-9 Flutter与Native通信-Android端实战
    8-8 Flutter与Native通信-Android端讲解
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3379722.html
Copyright © 2011-2022 走看看