【问题标题】:Jackson: ignore empty object杰克逊:忽略空对象
【发布时间】: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


【解决方案1】:

请在班级级别尝试以下操作。

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2016-04-19
    • 2016-01-16
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    相关资源
    最近更新 更多