如何在杰克逊反序列化camel case和snake case?

问题描述 投票:0回答:1

我想要

deserialize json
包含camel case或snake case的字符串,如下所示。

{"testField":"test"}

{"test_field":"test"}

并且,我想仅通过一个 ObjectMapper 对象反序列化此 json 字符串,如下所示。

public class Test {
    public static void main(final String[] args) throws JsonProcessingException {
        final ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

        System.out.println(objectMapper.readValue("{\"testField\":\"test\"}", Parent.class));
        System.out
                .println(objectMapper.readValue("{\"test_field\":\"test\"}", Parent.class));
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    static class Parent {
        String testField;
    }
}

但是,我可以反序列化为驼峰案例或蛇案例。

此外,我在序列化期间只想要蛇形案例。

我尝试了自定义 PropertyNamingStrategy。

但是效果并不好。

java jackson
1个回答
0
投票

您可以使用

@JsonAlias

class Parent {
    @JsonAlias({ "test_field" })
    String testField;
}
© www.soinside.com 2019 - 2024. All rights reserved.