gpt4 book ai didi

java - @RequestBody 映射复杂的 json 对象

转载 作者:行者123 更新时间:2023-12-03 21:22:53 24 4
gpt4 key购买 nike

我需要将下面的 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;

}

过滤器对象如下。
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"])

最佳答案

对于您的错误,如果 jackson 解析器不知道某个字段,则会引发异常。

您可以通过添加注释来避免它:

@JsonIgnore(ignoreUnknown=true)

在目标对象上。

对于您的映射,我建议您根据您的 json 输入创建一个对象,然后手动映射到您的目标对象。

关于java - @RequestBody 映射复杂的 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50385926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com