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;
}
}