不能用杰克逊反序列化实例



我正在研究一个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;
}

使用下面的代码转换为pojoam

mapper.readValue(json, FilterParams.Class);

但仍然得到"不能反序列化FilterParams的实例"。如何把它转换成pojo。

任何帮助都将非常感激。谢谢。

    你的JSON是无效的。filter的值不应该从"开始,如果它是一个JSON数组,或者应该在"内部转义,如果它是一个String
  1. 您的FilterParams类根本不反映JSON中的数据:它应该有limit int属性和arrayCollectionFilter s
  2. 然后你应该有一个Filtertype, valuefield属性

您的JSON包含2个元素:

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

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

相关内容

最新更新