关于 fastjson:简单来说就是将 java 对象转为 json 字符串,将 json 字符串转为 java 对象。以下是其中两个方法的简单使用,详情可以自行百度。
toJSONString :将对象转为 json 字符串。其中 SerializerFeature.WriteClassName 参数会使结果多一个 @type 的参数,在对该 JSON 数据进行反序列化的时候,会去调用指定类中对于的 get/set/is 方法。例如 {"@type":"User","age":12,"username":"hello"} 在进行反序列化是就会调用 User 类里的 get 和 set 方法。
String jsonString1 = JSON.toJSONString(user1);
System.out.println(jsonString1); // {"age":12,"username":"hello"}
String jsonString2 = JSON.toJSONString(user1, SerializerFeature.WriteClassName);
System.out.println(jsonString2); // {"@type":"User","age":12,"username":"hello"}
parseObject:将 json 字符串转为 java 对象,同时调用 set 和 get 方法
// 在User类的set和get方法中添加输出语句方便调试
String jsonString3 = "{\"@type\":\"User\",\"age\":12,\"username\":\"hello\"}";
Object parse2 = JSONObject.parseObject(jsonString3);
System.out.println(parse2);
------------输出结果--------------
setAge方法被调用
setUsername方法被调用
getAge方法被调用
getUsername方法被调用
{"age":12,"username":"hello"}
假如我们在 User 类的 set 或 get 方法中添加恶意代码,它就会在反序列化时自动被执行。
所以,我们在实际利用是,