【问题标题】:Not able to convert json to pojo class, getting com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException exception无法将 json 转换为 pojo 类,出现 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException 异常
【发布时间】:2020-07-13 22:18:43
【问题描述】:

这是我的 JsonObject

JSONObject input = new JSONObject("{\n" + 
                "   \"ColumnNames\":[\"col1\", \"col2\", \"col3\", \"col4\", \"col5\"]\n" + 
                "}");

我的 POJO 课程

public class RequestClass {
    private List<String> ColumnNames;

    public void setColumnNames(List<String> ColumnNames) {
        this.ColumnNames = ColumnNames;
    }

    public List<String> getColumnNames() {
        return this.ColumnNames;
    }
}

尝试在ObjectMapper的帮助下将JsonObject转换为pojo类对象,如下所示 -

ObjectMapper mapper = new ObjectMapper();
//mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

RequestClass request = null;
try {
    request = mapper.readValue(input.toString(), RequestClass.class);
} catch (Exception e) {
    e.printStackTrace();
} 

在输出中获取异常

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ColumnNames" (class RequestClass), not marked as ignorable (one known property: "columnNames"])
 at [Source: {"ColumnNames":["col1","col2","col3","col4","col5"]}; line: 1, column: 17] (through reference chain: RequestClass["ColumnNames"])

【问题讨论】:

    标签: java json parsing pojo jsonschema2pojo


    【解决方案1】:

    名为ColumnNames 的私有属性的名称实际上是无关紧要的。该属性是通过内省找到的,查看 getter 和 setter。按照惯例,如果您有名为getColumnNamessetColumnNames 的方法,它们会定义一个名为columnNames(小写c)的属性。

    所以你有两个选择:

    • 将 JSON 中的属性名称更改为 columnNames,或者
    • 使用注释覆盖默认的内省行为。

    后者是通过在getter和setter上使用@JsonProperty实现的,如下:

        @JsonProperty("ColumnNames")
        public List<String> getColumnNames() {
            return this.ColumnNames;
        }
    

    【讨论】:

      【解决方案2】:

      查看 pojo 中的异常,您提到了 ColumnNames 并且在 json 中您提到了 columnNames (a case mismatch) ,尽管您在上面的 json 示例中正确定义了它。请检查字段名称是否大小写不匹配。

      【讨论】:

      • 感谢您的回复。但是我也在 pojo 类中检查了更改名称,得到了同样的错误。似乎不是大小写不匹配的问题。
      猜你喜欢
      • 2019-06-25
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 1970-01-01
      相关资源
      最近更新 更多