我试图理解系统反序列化JSON数据的处理顺序。
是否正在为POJO的创建设置参数? 或者是通过调用各种setSomeArg(String someValu)方法设置的参数?
我没有通过搜索或Google找到答案。 欣赏对此的任何见解。如果这与已经在SO中的帖子重复,请发布链接,而不仅仅是说它是重复的。感谢。
答案 0 :(得分:0)
反序列化过程使用内省/反射,这意味着它将检查与JSON中发现的属性相同的属性,然后根据类属性类型设置值(即,如果将值转换为整数,则将值转换为整数它是一个整数)。
该过程是递归的,因此如果您的POJO具有其他POJO作为属性,它将尝试将JSON的值解析为对象,直到设置每个属性。 我不知道你正在使用哪个库,但是Genson要求一个没有属性的构造函数,以便通过内省/反射以类似
的方式调用它。POJO myPojo = POJO.class.newInstance();
然后,它将以如下方式设置每个属性:
long value = Long.ParseLong(myJson.get('value'));
// The example field is a long int
Field f = POJO.getClass().getDeclaredField("aFieldName");
f.setLong(myPojo, value);
如果您想要更完整的示例,请查看javadoc:https://docs.oracle.com/javase/tutorial/reflect/member/fieldValues.html