You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让API POST请求体中重复属性触发JSON反序列化失败?

解决方案

1. 使用Quarkus配置项快速开启

Quarkus支持通过配置直接开启Jackson的严格重复键检测,无需修改业务代码,在application.properties(或application.yml)中添加对应配置即可:

properties格式

quarkus.jackson.parser-feature.STRICT_DUPLICATE_DETECTION=true

yml格式

quarkus:
  jackson:
    parser-feature:
      STRICT_DUPLICATE_DETECTION: true

开启后,当请求体出现重复JSON键时,Jackson会抛出JsonParseException,Quarkus会自动将其转换为500错误响应,不会再用最后一个键值完成反序列化。

2. 自定义ObjectMapper(灵活扩展场景)

如果需要更精细地控制Jackson的配置逻辑,也可以通过自定义Provider类替换默认的ObjectMapper:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonParser;
import jakarta.ws.rs.ext.ContextResolver;
import jakarta.ws.rs.ext.Provider;

@Provider
public class CustomObjectMapperProvider implements ContextResolver<ObjectMapper> {

    private final ObjectMapper objectMapper;

    public CustomObjectMapperProvider() {
        objectMapper = new ObjectMapper();
        objectMapper.enable(JsonParser.Feature.STRICT_DUPLICATE_DETECTION);
        // 可按需添加其他Jackson配置项
    }

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return objectMapper;
    }
}

这个类会被Quarkus自动扫描并生效,同样能实现重复键检测失败的效果。

验证效果

当请求体传入{"name" : "banana", "name" : "orange"}这类包含重复键的JSON时,接口会直接返回500错误,响应中会包含Jackson的解析异常信息,不会再静默覆盖重复键的值。

内容的提问来源于stack exchange,提问作者TheRelax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:05:19