无法用jackson反序列化实例

时间:2014-05-15 08:23:15

标签: java extjs serialization jackson

我正在开发一个 RESTful 应用,其中响应作为JSON字符串从Extjs传递到java,所以我使用jackson反序列化到java POJO。

以下是我的要求:

{
  "filter": "[{"type":"string","value":"sdadsadsa","field":"groupName"}]",
  "limit": 10
}

FilterParams类如下所示:

class FilterParams {

    @JsonProperty( value = "type" )
    private String type;

    /** The value. */
    @JsonProperty( value = "value" )
    private String value; 

    /** The group name. */
    @JsonProperty( value = "field" )
    private String field;
}

使用以下代码转换为pojo am

mapper.readValue(json, FilterParams.Class);

但仍然得到“无法反序列化FilterParams的实例”。如何将其转换为pojo。

非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:1)

  1. 您的JSON无效。如果filter是JSON数组,则"的值不应该以{{1​​}}开头,如果是",则应该已经转义为内部String
  2. 您的FilterParams课程根本不反映您的JSON中的数据:它应该具有limit int属性以及arrayCollection Filter s
  3. 那么您应该拥有Filter课程typevaluefield属性

答案 1 :(得分:1)

您的JSON包含2个元素:filter&限制,以便Jackson无法将此JSON字符串与FilterParams对象匹配。

要忽略处理限制的JSON部分,请执行以下操作:

JsonNode tree = mapper.readTree(<JSON_STRING>);
FilterParams fp = mapper.treeToValue(tree.get("filter"), FilterParams.class);
相关问题