java - 如何在 Spring Boot 中从端点响应中全局省略空 xml 标签?

标签 java json xml spring-boot jackson-dataformat-xml

在我的应用程序中,我需要支持 json 和 xml 响应格式,并希望省略响应中的空值。在 json 响应中,这可以正常工作,但在 xml 响应中则不行。结果:

{
  "anotherValue": "value"
}

和:

<MyDoc>
  <value/>
  <anotherValue>value</anotherValue>
</MyDoc>

我希望 xml 看起来像:

<MyDoc>
  <anotherValue>value</anotherValue>
</MyDoc>

@JsonInclude(JsonInclude.Include.NON_NULL) 注释每个响应类是一个可能的解决方案,但我希望它全局配置。我的代码:

@SpringBootApplication
@RestController
@Configuration
public class Application {

    @Bean
    public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
        return builder
                .serializationInclusion(JsonInclude.Include.NON_NULL)
                .serializationInclusion(JsonInclude.Include.NON_EMPTY)
                .build();
    }

    @GetMapping(value = "api/json", produces = APPLICATION_JSON_VALUE)
    public MyDoc json() {
        return new MyDoc(null, "value");
    }

    @GetMapping(value = "api/xml", produces = APPLICATION_XML_VALUE)
    public MyDoc xml() {
        return new MyDoc(null, "value");
    }

    public static class MyDoc {
        public String value;
        public String anotherValue;

        public MyDoc(String val1, String val2) {
            this.value = val1;
            this.anotherValue = val2;
        }
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

我在这里缺少什么?任何帮助表示赞赏!谢谢, 达格R

最佳答案

这对我来说效果很好......


    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
        return builder -> {
            builder.serializationInclusion(JsonInclude.Include.NON_NULL);
            builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);
        };
    }

注意输出 XML,您需要使用 jackson-dataformat-xml

        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
        </dependency>

关于java - 如何在 Spring Boot 中从端点响应中全局省略空 xml 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60785741/

相关文章:

java - 将数组交换到其原始状态

mysql - 如何在 MySQL 中将结果表转换为 JSON 数组

java - 如何在 Java 中对 XML 文件进行微小的编辑

java - 更改默认布局时应用程序崩溃说,不幸的是应用程序已停止

php - 如何在 PHP 中检查 UNIXTimeStamp 是中午还是晚上

javascript - 如何使用 XPath 访问 FireFox 中的 xml 属性?

java - 为了执行这个操作该怎么做?

java - 在 Java 中转换引用变量

java - Quarkus + Kafka + Smallrye 异常处理

复制并粘贴字符串后,Javascript JSON.parse 不起作用