无法将json转换为pojo类,得到com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException异常

拉希特·Ja那(Rachit Jain):

这是我的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"])
马里奥·科米尔(Mario Cormier):

私有属性的名称ColumnNames实际上是不相关的。通过内省,查看吸气剂和吸气剂,可以找到该特性。按照约定,如果您有名为getColumnNames和的方法setColumnNames,它们将定义一个名为columnNames(lowercase c的属性

因此,您有两种选择:

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章