【发布时间】:2022-06-22 17:58:25
【问题描述】:
如果inner类中字段name的值为null,则
{"id": 123, "inner": {}}
作为响应返回。但是,如果 inner 的值作为 {} 返回,则键值对
“内在”:{}
应该完全忽略,所以响应是
{"id": 123}
。如何做到这一点?我以为可以通过@JsonInclude(JsonInclude.Include.NON_NULL) 实现,但并没有解决问题。
@RestController
public class ItemController {
@Autowired
ItemService itemService;
@GetMapping("/item")
public Item getItem() {
return itemService.getItem(); // {"id": 123,"inner": {}} is returned but should be {"id": 123}
}
}
@Service
public class ItemService {
public Item getItem() {
Item.Inner inner = new Item.Inner();
Item item = new Item();
item.setInner(inner);
item.setId(123);
return item;
}
}
@Data
public class Item {
private int id;
private Inner inner;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
public static class Inner {
private String name;
}
}
【问题讨论】:
-
你为什么不在
Item类中添加@JsonInclude?
标签: java jackson spring-restcontroller