json强大解析工具gson

本文详细介绍了Gson工具类的使用方法,包括JavaBean对象、List、Map与JSON之间的互相转换。通过具体示例展示了如何利用Gson进行序列化与反序列化操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:GsonUtils工具类

/**
 * google json utils
 * **/
public class GsonUtils {

    public static final String DATE_FORMAT="yyyy-MM-dd HH:mm:ss";

    /**
     * get google json
     * @see Gson
     * **/
    public static Gson getGson() {
        return (new GsonBuilder()).serializeNulls().setDateFormat(GsonUtils.DATE_FORMAT).create();
    }

    /**
     * object to json
     * **/
    public static String toJson(Object obj) {
        return getGson().toJson(obj);
    }

    /**
     * json to type
     * @see Gson#toJson(Object, Type)
     * **/
    public static String toJson(Object obj, Type type) {
        return getGson().toJson(obj, type);
    }

    /**
     * generic t to json
     * **/
    public static <T> String t2Json(T t) {
        return getGson().toJson(t);
    }

    /**
     * json to generic t
     * **/
    public static <T> T json2T(String jsonString, Class<T> clazz) {
        return getGson().fromJson(jsonString, clazz);
    }

    /**
     * json to collection
     * **/
    public static <T> List<T> json2Collection(String jsonStr, Type type) {
        return (List<T>) getGson().fromJson(jsonStr, type);
    }

    /**
     * json to type
     * @see Gson#fromJson(String, Type)
     * **/
    public static <T> T fromJson(String jsonStr, Type type) {
        return getGson().fromJson(jsonStr, type);
    }

    /**
     * json to class type
     * **/
    public static <T> T fromJson(String jsonStr, Class<T> clazz) {
        return getGson().fromJson(jsonStr, clazz);
    }
}

1:java bean对象转换成json

//实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private Integer id;

    private String name;

    private Integer age;
}
    @Test
    public void testBean2Json() {
        System.out.println(GsonUtils.toJson(new User(1, "王旭", 22)));
    }

2:List对象转换成json

    //方法1
    @Test
    public void testBeanList2Json() {
        System.out.println(GsonUtils.toJson(Arrays.asList(
                new User(1, "王旭", 22),
                new User(2, "王旭1", 23),
                new User(3, "王旭2", 24)
                )
        ));
    }
    //方法2,指定具体的泛型
    @Test
    public void testBeanList2Json2() {
        System.out.println(GsonUtils.toJson(Arrays.asList(
                new User(1, "王旭", 22),
                new User(2, "王旭1", 23),
                new User(3, "王旭2", 24)
        ), new TypeToken<List<User>>() {
        }.getType()));
    }

3:Map对象转换成json

    private static Map<String, User> userMap = new HashMap<>();

    static {
        userMap.put("1", new User(1, "王旭", 22));
        userMap.put("2", new User(2, "王旭", 23));
    }

    @Test
    public void testMap2Json() {
        System.out.println(GsonUtils.toJson(userMap));
    }

4:Json转成java bean对象

    @Test
    public void testJson2Bean() {
        User user = GsonUtils.fromJson("{\"id\":1,\"name\":\"王旭\",\"age\":22}", User.class);
        System.out.println(user);
    }

5:Json转成List对象

    //TypeToken用来获取转换出来的泛型类型,如果转换成泛型请使用该类
    @Test
    public void testJson2List() {
        String jsonList = "[{\"id\":1,\"name\":\"王旭\",\"age\":22},{\"id\":2,\"name\":\"王旭1\",\"age\":23},{\"id\":3,\"name\":\"王旭2\",\"age\":24}]";
        List<User> userList = GsonUtils.fromJson(jsonList, new TypeToken<List<User>>() {
        }.getType());
        System.out.println(userList);
    }

6:Json转成map对象

    //其中,使用TypeToken可以将json转换成对应的Java类型
    @Test
    public void testJson2Map() {
        TypeToken<Map<String, User>> typeToken = new TypeToken<Map<String, User>>() {
        };
        Map<String, User> map = GsonUtils.fromJson("{\"1\":{\"id\":1,\"name\":\"王旭\",\"age\":22},\"2\":{\"id\":2,\"name\":\"王旭\",\"age\":23}}",
                typeToken.getType());
        System.out.println(map);
    }

    //在转换json的时候
    //第一步:知道json是什么构造的
    //第二步:转换出相应的Java类型
    @Test
    public void testJson2Map() {
        TypeToken<TreeMap<String, User>> typeToken = new TypeToken<TreeMap<String, User>>() {
        };
        TreeMap<String, User> map = GsonUtils.fromJson("{\"1\":{\"id\":1,\"name\":\"王旭\",\"age\":22},\"2\":{\"id\":2,\"name\":\"王旭\",\"age\":23}}",
                typeToken.getType());
        for (Map.Entry<String, User> entry : map.entrySet()) {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值