fastjson 序列化工具类

字符串转换成 Map 对象

    public static void str2Map() {
        MyBean myBean = new MyBean();
        myBean.setAge(20);

        Map<String, MyBean> strMap = new HashMap<>();
        strMap.put("a", myBean);

        String str = JSON.toJSONString(strMap);

        // value 是个 JSONObject 对象,而不是 MyBean
        Map<String, JSONObject> str2Map1 = JSON.parseObject(str, Map.class);

        //如果要将 字符串转换成 Map<String,MyBean> map的 kv 感知到具体的类型,需要使用 TypeReference
        Map<String,MyBean> str2Map2 = JSON.parseObject(str,new TypeReference<Map<String, MyBean>>(String.class, MyBean.class) {});

        System.out.println(str2Map1);//str2Map1 的 value 是个 JSONObject 对象。
        System.out.println(str2Map2);//str2Map2 的 value 是 MyBean 对象,有具体的类型。
    }

使用 com.alibaba.fastjson.JSON#parseObject(java.lang.String, java.lang.Class<T>) 将字符串转换成对象时,一定要注意:转出来的对象是否符合预期。当字段对不上时,转换不会抛异常,而是转换成默认的对象,这里需要谨慎。

//myBean 不会是 null 也不会报错,而是会是一个默认的对象。
MyBean myBean = JSON.parseObject("{}", MyBean.class);
public class MyBean {
    private int age = 10;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
posted @ 2024-07-23 19:52  大熊猫同学  阅读(11)  评论(0编辑  收藏  举报