我正在与 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但似乎没有任何效果。有什么办法可以用字段值解决这个问题吗?字段名称有功能,但字段值没有。
那么有什么办法可以解决这个问题吗?