• Java之JSON操作(gson)


    使用gson包操作JSON数据。

    依赖包:gson-2.8.2.jar

    <dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.2</version>
    </dependency>

    代码如下:

      1 package json.gson;
      2 
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 import java.util.Map;
      6 
      7 import com.google.gson.Gson;
      8 import com.google.gson.JsonArray;
      9 import com.google.gson.JsonElement;
     10 import com.google.gson.JsonParser;
     11 import com.google.gson.reflect.TypeToken;
     12 
     13 /**
     14  * 使用gson来操作Json
     15  * 1.对象实体类,list,map,等转化成----->jsonString(进行数据传递)
     16  * 2.jsonString转化成----->对象实体类,list,map(解析返回的数据)
     17  * 3.我使用的是gson-2.2.2.jar
     18  *
     19  */
     20 public class JsonUtil {
     21 
     22 
     23     private static Gson gson = null;
     24 
     25     static {
     26         if (gson == null) {
     27             gson = new Gson();
     28         }
     29     }
     30 
     31 
     32     /**
     33      * 将object对象转成json字符串(jsonString)
     34      * boject 可以是List,也可以是Bean(对象类型)
     35      *
     36      * @param object
     37      */
     38     public static String GsonString(Object object) {
     39         String gsonString = null;
     40         if (gson != null) {
     41             gsonString = gson.toJson(object);
     42         }
     43         return gsonString;
     44     }
     45 
     46 
     47     /**
     48      * 入参是json对象
     49      * 将gsonObjectString转成泛型bean(实体类)
     50      *
     51      * @param gsonString
     52      */
     53     public static <T> T GsonToBean(String gsonString, Class<T> cls) {
     54         T t = null;
     55         if (gson != null) {
     56             t = gson.fromJson(gsonString, cls);
     57         }
     58         return t;
     59     }
     60 
     61     /**
     62      * 这里的入参是json数组类型的字符串
     63      * jsonArrayString转成list
     64      */
     65     public static <T> List<T> jsonArrayToList(String json, Class<T> cls) {
     66         Gson gson = new Gson();
     67         List<T> list = new ArrayList<T>();
     68         JsonArray array = new JsonParser().parse(json).getAsJsonArray();
     69         for (final JsonElement elem : array) {
     70             list.add(gson.fromJson(elem, cls));
     71         }
     72         return list;
     73     }
     74 
     75 
     76     /**
     77      * List对泛型没有要求
     78      * jsonString转成list中有map的
     79      */
     80     public static <T> List<Map<String, T>> GsonToListMap(String gsonString) {
     81         List list = null;
     82         if (gson != null) {
     83             list = gson.fromJson(gsonString,
     84                     new TypeToken<List>() {
     85                     }.getType());
     86         }
     87         return list;
     88     }
     89 
     90     /**
     91      * 要求List中全部是Map
     92      * jsonString转成list中有map的
     93      */
     94     public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
     95         List<Map<String, T>> list = null;
     96         if (gson != null) {
     97             list = gson.fromJson(gsonString,
     98                     new TypeToken<List<Map<String, T>>>() {
     99                     }.getType());
    100         }
    101         return list;
    102     }
    103 
    104 
    105     /**
    106      * jsonString转成map的
    107      */
    108     public static <T> Map<String, T> GsonToMaps(String gsonString) {
    109         Map<String, T> map = null;
    110         if (gson != null) {
    111             map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
    112             }.getType());
    113         }
    114         return map;
    115     }
    116 
    117     /**
    118      * map转jsonString,指定了Map类型
    119      */
    120     public static String MapToJson(Map<String, Object> map) {
    121         String str = null;
    122         if (gson != null) {
    123             str = gson.toJson(map);
    124         }
    125         return str;
    126     }
    127 
    128 }

    测试代码:

     1 package json.gson;
     2 
     3 import bean.User;
     4 
     5 public class TestGson {
     6 
     7     private static User user = null;
     8 
     9     static {
    10         user = new User("tom", 25, "NO.1 street");
    11     }
    12 
    13     public static void main(String[] args) {
    14         String jsonStr = JsonUtil.GsonString(user);
    15         System.out.println(jsonStr);
    16 
    17         String jsonStr2 = "{"name":"tom","age":25,"address":"NO.1 street"}";
    18         User user2 = JsonUtil.GsonToBean(jsonStr2, User.class);
    19         System.out.println(user2);
    20     }
    21 }

    运行结果:

    {"name":"tom","age":25,"address":"NO.1 street"}
    User[name='tom', age=25, address='NO.1 street']

  • 相关阅读:
    算法面试准备(一)之----交叉熵与logistic回归推导
    Julia初学备忘
    二维数组中的查找,替换空格
    快慢指针倒数第K个节点,每K个一组反转链表
    贝叶斯网络之----(d-分离步骤)
    一笑
    尾曲
    ggplot在python中的使用(plotnine)
    SVC之SMO算法理解
    特征选取之IV(信息值)及python实现
  • 原文地址:https://www.cnblogs.com/gongxr/p/8444183.html
Copyright © 2020-2023  润新知