0

我正在与 Jackson JsonParser 一起解析请求。我正在尝试在 java 中开发一些 api,但我遇到了 Jackson JsonParser 的问题。问题是当任何人尝试使用未引用的字段值请求我的 api 时,它是允许它而不是拒绝它。我知道这是一种功能,但它给我的项目带来了麻烦。

那么为什么我想要这个呢?我有一个如下的java类。

public class CartDetails {

@NotNull(errorCode = "invalid.productId", message = "Invalid product Id.")
@NotEmpty(errorCode = "invalid.productId", message = "Invalid product Id.")
@MaxLength(value = 13, errorCode = "invalid.productId", message = "Product Id exceeded max length.")
public String productId;

/* Some more fields */
}

所以这里的产品 ID 是字符串。但是现在我们所有的产品 ID 都是数字形式。但是为了将来的目的,我们将其设为字符串,通过添加一些前缀字符(如“LA-1234”)来对这个 id 进行分类。在这里如果你通过 Json 请求如下

{   
"productId": "123456",
}

或者

{   
"productId": 123456,
}

它将被接受,并且 ObjectMapper 将它与我的 CartDetails 类进行映射。但是,当我在未引用的字段值中添加任何其他字符(如“-”)时,会抱怨,如果相同的请求带有引用的字段值,那么它将接受它。

{   
"productId": "LA-123456",
}

以上请求将起作用。但不是下面的。

{   
"productId": LA-123456,
}

所以我希望下面的这个请求也不起作用。

{   
"productId": 123456,
}

我希望对它进行严格的类型检查。它不应该允许任何对没有双引号的 String 类型的请求。因为我不希望我的任何 api 消费者继续使用我的 api 而不传递不带引号的请求,当我将 productId 从“1234”更改为“LA-1234”时,突然一切都开始抱怨了。

我搜索了“ com.fasterxml.jackson.core.JsonParser.Feature ”和org.codehaus.jackson.map.DeserializationConfig.Feature但似乎没有任何效果。有什么办法可以用字段值解决这个问题吗?字段名称有功能,但字段值没有。

那么有什么办法可以解决这个问题吗?

4

0 回答 0