Java JsonNode.isBigInteger()对任何数字返回false
我已经创建了一个REST服务,它正在数据库中查找某些对象。 对象由ID或名称标识。ID是一个大整数(最多256位)。 我的控制器中有一段代码:Java JsonNode.isBigInteger()对任何数字返回false,java,biginteger,jackson-databind,Java,Biginteger,Jackson Databind,我已经创建了一个REST服务,它正在数据库中查找某些对象。 对象由ID或名称标识。ID是一个大整数(最多256位)。 我的控制器中有一段代码: for(JsonNode node : arrayNode) { if(node.isBigInteger()) { resultList.add(repository.getById(node.bigIntegerValue())); } else if(node.isTextual()) { resultL
for(JsonNode node : arrayNode) {
if(node.isBigInteger()) {
resultList.add(repository.getById(node.bigIntegerValue()));
} else if(node.isTextual()) {
resultList.add(repository.getByName(node.textValue()));
} else {
// skip it
}
}
如果在请求中我只给出名称,它将按预期工作,但如果我指定数值,isBigInteger()将始终返回false。
不幸的是,Jackson中没有用于此函数的Javadoc。
有人用过这个函数吗?是有bug还是我做错了什么?如果ID足够小,不需要大整数来匹配,那么Jackson几乎肯定不会以这种方式反序列化它们。它无法知道,在这么低的a级别,你一直想要大整数 这是我们将这样的数据反序列化到模型类中的原因之一,以提供关于这样的事情的提示