我遇到了一个反序列化问题:
这是我的班级:
public class Response {
private Object ResObj;
private int ResInt;
public Object getResObj() {
return ResObj;
}
public int getResInt() {
return ResInt;
}
}
我想要反序列化JSON是:
{"ResObj":{"ClientNum":"12345","ServerNum":"78945","IdNum":"020252"},"ResInt":0}
我得到这个例外:
Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ResObj" , not marked as ignorable (0 known properties: ])
at [Source: java.io.StringReader@1f758500; line: 1, column: 20] (through reference chain: ["ResObj"])
我不想补充:
@JsonIgnoreProperties(ignoreUnknown = true)
因为我想得到ResObj...
如果我添加注解,它会通过,但它会将其设置为null ..我不想这样
7条答案
按热度按时间xxhby3vn1#
如果不想在bean中使用setter,而只使用fields和getter,那么可以使用
ObjectMapper
的可见性检查器来允许字段可见性。类似以下内容:
plupiseo2#
您需要Setter方法来允许Jackson设置属性,并且您需要更改json中的字段以小写字母开始:
以及:
JSON更改的原因是Jacksonbean序列化将反映在类上,当它看到getXyz()和setXyz()方法时,它将这些方法Map到名为“xyz”(而不是“Xyz”)的JSON字段。
我认为有几种方法可以覆盖这种行为,一种是使用Jackson注解之一。
cfh9epnr3#
我觉得你应该试试这个
它将解决您的UnrecognizedPropertyExceptions问题
yacmzcpb4#
使用此解决上述问题。
0yycz8jy5#
我已经使用Jackson库解决了这个问题。下面是我的代码片段。
zkure5ic6#
我尝试了上面提到的所有方法,但在我的情况下,这是唯一的解决方案,作为回答here解决方案2.在这里,我在我的Sping Boot 应用程序中启用了
@EnableWebMvc
。ntjbwcob7#
您需要为ResObj {“ClientNum”:“12345”,“ServerNum”:“78945”,“IdNum”:“020252”}中的信息定义另一个类。否则Jackson无法确定如何反序列化。