json序列化:jackson将驼峰命名转下划线并大写

发布时间 2023-04-23 17:04:29作者: Peter.Jones

 

Java类

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class OrderDetailParam {
    @JsonProperty("serviceCode")
    private String serviceCode; 
    @JsonProperty("target")
    private String target;
    @JsonProperty("source")
    private String source;
    private OrderDetailDataParam data;

    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    @Data
    public static class YxOrderDetailDataParam {
        @JsonProperty("APP_NO")
        private String appNo;
        @JsonProperty("ORG_NO")
        private String orgNo;
        @JsonProperty("CONS_NO")
        private String consNo;
    }
}

 

main方法

       var param = OrderDetailParam.builder()
                .serviceCode("20221")
                .source("")
                .target("")
                .data(OrderDetailParam.OrderDetailDataParam.builder().orgNo("122222").appNo("312302270004011").build())
                .build();
        ObjectMapper objectMapper = new ObjectMapper(); // 创建Jackson ObjectMapper对象
        objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); //设置Jackson PropertyNamingStrategy为SNAKE_CASE
        String paramJsonStr = objectMapper.writeValueAsString(param); // 将Java对象转换为JSON字符串
        System.out.println(paramJsonStr);

结果

{"data":{"APP_NO":"22222222","ORG_NO":"11111","CONS_NO":null},"serviceCode":"11111","target":"","source":""}