ora*_*001 5 java jackson spring-boot
如何从Jackson 在 a 中生成的 JSON 响应中排除所有空 json 对象{}、数组[]或空对象数组?[{},{}]RestController
我正在为客户端构建 Spring Boot REST API。API 向数据库发送请求,并且必须生成 JSON 响应。
@JsonInclude(JsonInclude.Include.NON_NULL)注释实现{}或数组[],或空对象数组[{},{}]必须从 JSON 响应中排除。这就是我陷入困境的地方(请参阅下面的示例)DAO层手动映射:
public List<A> daoMethod() {
List<Object[]> dbResult = getDbResults();
List<A> javaObjects = new ArrayList<>();
// build nested Java objects
for (Object[] line in dbResult) {
A a = new A();
a.setProp1(line[0]);
a.setProp2(line[1]);
// and so on...
javaObjects.add(a);
return javaObjects ;
}
}
Run Code Online (Sandbox Code Playgroud)
控制器方法:
public ResponseEntity<A> controllerMethod() {
List<A> javaObjects = myDao.daoMethod();
return new ResponseEntity(javaObjects, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)
所有必须在 JSON 响应中序列化的 DTO 类都扩展了该类BaseDto:
@JsonInclude(JsonInclude.Include.NON_NULL) // removes all fields having NULL value
public abstract class BaseDto implements Serializable{
// some properties...
}
Run Code Online (Sandbox Code Playgroud)
当前 JSON 输出:
{
prop1: "some string",
prop2: [{},{},{}],
prop3: [],
prop4: {},
}
Run Code Online (Sandbox Code Playgroud)
预期的:
{
prop1: "some string"
}
Run Code Online (Sandbox Code Playgroud)
尝试使用NON_EMPTY
@JsonInclude(JsonInclude.Include.NON_EMPTY)
Run Code Online (Sandbox Code Playgroud)
指示仅不包含具有空值或被视为空的属性的值。
| 归档时间: |
|
| 查看次数: |
3828 次 |
| 最近记录: |