我正在与Jackson JsonParser合作解析请求。我试图在java中开发一些apis,我遇到了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 */
}
所以这里Product Id是String。但是现在我们所有的产品ID都是数字形式。但是我们将它作为字符串用于将来的目的,通过添加一些前缀字符来对这个id进行分类,例如" LA-1234"。这里如果你传递Json请求如下
{
"productId": "123456",
}
或者
{
"productId": 123456,
}
它将被接受,ObjectMapper将它映射到我的CartDetails类。但是当我把任何其他角色放在" - "在我的未加引号字段值中,它会抱怨并且如果相同的请求与引用字段值一致,那么它将接受它。
{
"productId": "LA-123456",
}
以上请求将有效。但不是下面的那个。
{
"productId": LA-123456,
}
所以我希望下面的请求也不起作用。
{
"productId": 123456,
}
我希望它是严格的类型检查。它不应该允许任何类型String的请求没有双引号。因为我不希望我的任何api消费者继续使用我的api而不传递没有引号的请求以及当我从" 1234"更改productId时到" LA-1234"突然间,一切都开始抱怨。
我搜索了" com.fasterxml.jackson.core.JsonParser.Feature "和 org.codehaus.jackson.map.DeserializationConfig.Feature 但似乎没有任何效果。有没有办法用字段值来解决这个问题?字段名称有功能,但字段值没有。
那么我有什么方法可以解决这个问题吗?