我正在研究一个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是无效的。
- 您的
FilterParams
类根本不反映JSON中的数据:它应该有limit
int
属性和array
或Collection
的Filter
s - 然后你应该有一个
Filter
类type
,value
和field
属性
filter
的值不应该从"
开始,如果它是一个JSON数组,或者应该在"
内部转义,如果它是一个String
。您的JSON包含2个元素:
要忽略处理limit的JSON部分,请执行以下操作:
JsonNode tree = mapper.readTree(<JSON_STRING>);
FilterParams fp = mapper.treeToValue(tree.get("filter"), FilterParams.class);