• JSON 之GSON 解析


    一、 谷歌GSON这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。


     二、Gson解析Json步骤
     A、服务器端将数据转换成json字符串
       首先、服务器端项目要导入Gson的jar包到BuiltPath中。(

    Gson的jar:http://code.google.com/p/google-gson/   我们还可以下载gson的帮助文档
    JSON <wbr>之GSON <wbr>解析





    然后将数据转为json字符串,核心函数是:
        public static String createJsonString(Object value)
        {
            Gson gson = new Gson();
            String str = gson.toJson(value);

            return str;
        }
    B、客户端将json字符串转换为相应的javaBean
        首先客户端也要导入gson的两个jar包,json的jar就不需要导入了(因为android项目中已经集成了json的jar包所以这里无需导入
       1、客户端获取json字符串
    public class HttpUtil
    {
       
        public static String getJsonContent(String urlStr)
        {
            try
            {// 获取HttpURLConnection连接对象
                URL url = new URL(urlStr);
                HttpURLConnection httpConn = (HttpURLConnection) url
                        .openConnection();
                // 设置连接属性
                httpConn.setConnectTimeout(3000);
                httpConn.setDoInput(true);
                httpConn.setRequestMethod("GET");
                // 获取相应码
                int respCode = httpConn.getResponseCode();
                if (respCode == 200)
                {
                    return ConvertStream2Json(httpConn.getInputStream());
                }
            }
            catch (MalformedURLException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return "";
        }

       
        private static String ConvertStream2Json(InputStream inputStream)
        {
            String jsonStr = "";
            // ByteArrayOutputStream相当于内存输出流
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            // 将输入流转移到内存输出流中
            try
            {
                while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
                {
                    out.write(buffer, 0, len);
                }
                // 将内存流转换为字符串
                jsonStr = new String(out.toByteArray());
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return jsonStr;
        }
    }

    2、使用泛型获取javaBean(核心函数)
        public static <T> T getPerson(String jsonString, Class<T> cls) {
            T t = null;
            try {
                Gson gson = new Gson();
                t = gson.fromJson(jsonString, cls);

            } catch (Exception e) {
                // TODO: handle exception
            }
            return t;
        }

    public static <T> List<T> getPersons(String jsonString, Class<T> cls) {
            List<T> list = new ArrayList<T>();
            try {
                Gson gson = new Gson();
                list = gson.fromJson(jsonString, new TypeToken<List<cls>>() {
                }.getType());

            } catch (Exception e) {
            }
            return list;
        }
    public static List<Map<String, Object>> listKeyMaps(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;
        }
  • 相关阅读:
    <O(n),O(1)>的LCA
    hdu6110
    ACM模板
    prufer编码
    UvaLive6893_The_Big_Painting
    HDU5669
    Codeforces786B
    二分图部分总结
    Git简介和Windows下安装步骤
    笔记本电脑插入耳机后无法使用解决办法
  • 原文地址:https://www.cnblogs.com/kabi/p/5182784.html
Copyright © 2020-2023  润新知