使用FasterXML Jackson将字符串转换为整数

8
我将翻译以下内容:

我正在使用两个JSON。

第一个JSON中ID是字符串类型。

"details": {
    "id": "316.0"
}

另一个的ID是整数类型。
"details": {
    "detailId": 316
}

两个JSON被映射到了FasterXML的两个不同类中,我希望这两个id都是整数类型。目前它们是字符串。

如何强制FasterXML将“316.0”转换为整型,以便我可以轻松比较这两个属性?

2个回答

16

Jackson实际上处理强制类型转换,因此如果属性具有类型intjava.lang.Integer,它将解析JSON字符串,而不仅仅使用JSON数字。 同样可以使用@JsonFormat(shape=Shape.STRING)来反转数值字段。


2

由于格式并不总是相同的,最好的方法是将其作为字符串检索并解析:

int detailId = (int) Float.parseFloat(node.path("details").asText());

你需要使用asText()吗?或许有一个返回数字的方法。 - Peter Lawrey
有的,但是它的格式不允许,因为它有时是整数,有时是字符串。或者我错了吗?你似乎暗示相反的意思 :) - Dici
我认为OP想要忽略"。我会使用一个返回double的方法并进行强制转换。可能需要进行一些四舍五入。 - Peter Lawrey
我认为解析会失败,因为“5”不是一个数字字段。我会尝试一下。 - Dici

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接