Java 反序列化JSON时,参数是否刚刚设置?

Java 反序列化JSON时,参数是否刚刚设置?,java,json,jackson,json-deserialization,Java,Json,Jackson,Json Deserialization,我试图理解系统反序列化JSON数据时的处理顺序 这些参数是在创建POJO时设置的吗? 或者参数是通过调用各种setSomeArg(String someValu)方法设置的 我没有通过搜索或谷歌找到我的答案。 感谢您对这方面的任何见解。如果这是一个重复的张贴已经在所以请张贴一个链接,而不仅仅是说这是一个重复。谢谢。反序列化过程使用内省/反射,这意味着它将检查与JSON中找到的属性相同的属性,然后根据类属性类型设置值(即,如果是整数,则将值转换为整数) 该过程是递归的,因此如果您的POJO具有另一

我试图理解系统反序列化JSON数据时的处理顺序

这些参数是在创建POJO时设置的吗? 或者参数是通过调用各种setSomeArg(String someValu)方法设置的

我没有通过搜索或谷歌找到我的答案。
感谢您对这方面的任何见解。如果这是一个重复的张贴已经在所以请张贴一个链接,而不仅仅是说这是一个重复。谢谢。

反序列化过程使用内省/反射,这意味着它将检查与JSON中找到的属性相同的属性,然后根据类属性类型设置值(即,如果是整数,则将值转换为整数)

该过程是递归的,因此如果您的POJO具有另一个POJO as属性,它将尝试将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:

我正在使用FasterXML.Jackson库。我确实理解上面的内容,这只是我好奇的值的实际设置。它只是通过将属性设置为JSON中的值来设置属性,还是利用POJO中为该属性定义的setSomeMethod()来设置属性?我只是编辑了答案以匹配您的注释。我认为“setLong(objectConcerned,value)”是您正在寻找的方法。我们在同一个页面上,您是说当JSON被反序列化到pojo中时,pojo属性是由方法setSomeArg(String someValu)设置的,并且总是这样,对吗?