【发布时间】:2018-10-27 09:30:30
【问题描述】:
我需要将下面的 json 转换为 @RequestBody 的 java 对象。
{
"entity": {
"id": 3,
"name": "james"
},
"conjunction": "OR",
"conditions": [
{
"operation": "equalTo",
"dataKey": "department",
"dataType": "string",
"value": "abc"
},
{
"operation": "notEqualTo",
"dataKey": "ID",
"dataType": "number",
"value": "100"
},
{
"operation": "notEqualTo",
"dataKey": "name",
"dataType": "strubg",
"value": "jack"
},
{
"operation": "between",
"dataKey": "END_DATE",
"dataType": "date",
"value1": "20180502",
"value2": "20180519"
}
]
}
数组的前三个元素对应下面的java对象。
public class ComparisonCondition extends Condition {
private String value;
}
最后一个元素对应下面的对象。
public class BetweenCondition extends Condition {
private String value1;
private String value2;
}
它们都继承自下面的对象。
public class Condition {
private String dataKey;
private String dataType;
private String operation;
}
spring mvc方法如下。
@RequestMapping(value = RequestAction.FILTER, method = RequestMethod.POST)
public List<Student> filter(
@RequestBody Filter<Student> filterConfig) {
return null;
}
Filter 对象在下方。
public class Filter<T> {
private String conjunction;
private T entity;
private List<Condition> conditions;
}
如何成功地将 json 映射到 java 对象?
目前它报告"Could not read JSON: Unrecognized field "value" (class com.ssc.rest.entity.Condition), not marked as ignorable (3 known properties: "dataType", "dataKey", "operation"])
【问题讨论】:
-
滚动到已接受答案中的第二个解决方案
-
你不能用
private List<Map<String, String>> conditions;吗?