小编And*_*nes的帖子

如何在Jackson序列化期间跳过Optional.empty字段?

我有一个带有Optional字段的Java类.我使用Jackson 2.8.3(从Spring web 4.3.3调用)将类序列化为JSON.

如果Optional为空,我希望让序列化程序跳过该字段,并序列化包含的字符串(如果存在).我正在寻找两个对象列表的结果示例:

[
    {
        "id": 1,
        "foo": "bar"
    },
    {
        "id": 2,
    }
]
Run Code Online (Sandbox Code Playgroud)

对于id为2的对象,foo Optional为空.

相反,我得到的是:

[
    {
        "id": 1,
        "foo": {
            "present": true
        }
    },
    {
        "id": 2,
        "foo": {
            "present": false
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

即使我在类中注释"bar"字段,这也是结果

@JsonInclude(JsonInclude.Include.NON_ABSENT)
public Optional<String> getFoo() { ...
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以使用Jackson注释或自定义序列化器来获得第一个列表的结果?

java serialization json jackson spring-boot

5
推荐指数
1
解决办法
2638
查看次数

标签 统计

jackson ×1

java ×1

json ×1

serialization ×1

spring-boot ×1