当前位置: 首页 > 面试题库 >

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段

万俟震博
2023-03-14
问题内容

我遇到反序列化问题:

这是我的课:

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 ..这是我不想要的。


问题答案:

如果您不想在bean中使用设置器,而只使用字段和获取器,则可以使用ObjectMapper的可见性检查器来允许字段可见。像下面这样

ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.setVisibilityChecker(VisibilityChecker.Std.defaultInstance().withFieldVisibility(JsonAutoDetect.Visibility.ANY));


 类似资料:
  • 问题内容: 我使用杰克逊将JSON转换为Object类。 JSON: 对象类别: 码: 我的代码抛出这样的异常: 而且我不想在Test类上添加一个道具,我只是想让jackson转换Test中也存在的存在值。 问题答案: Jackson提供了几种不同的机制来配置“额外” JSON元素的处理。以下是将to 配置为not 的示例。 有关其他方法,请参见http://wiki.fasterxml.com/

  • 我有一个具有此结构的 xsd 文件: 所以,我已经用jaxb2生成了java类: Accesso 类和其他类也是如此。这是我尝试反序列化的xml文件的一个例子: 但是当我要反序列化某个xml文件时,我得到了这个错误: com.fasterxml.jackson.databind.exc.未识别的字段Accesso(类com.xx.yy.FlsProSoc),未标记为不可忽略(一个已知的属性:内容]

  • 我有一个thymeleaf表单和Spring引导后端。我有一个model类,它的getters和setters名称有点不同。因此,当我要取那个模型并将它的字段作为表单输入字段时,Tymeleaf不能将它们识别为字段。 窗体适用于区域字段。但对Amt字段不起作用。如果我将isAmt()get方法更改为getIsAmt(),也许我可以修复这个问题。但是我不能更改模态类的任何方法名,因为这个类已经编译好

  • 我试图张贴消息(包含英文和中文)到一个服务器。如果我使用Java应用程序来张贴消息,它工作得很好。 虽然我在Android中使用HttpPost,但服务器会收到无法识别的字符,例如 "æ¸åå¤§å ¦". 我尝试使用HttpURLConnection发布消息,结果也包含无法识别的字符。Java应用程序中的HttpClient和Android应用程序中的HttpClient有什么区别?非常奇怪。

  • 我有以下序列

  • 我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢