如何使用不带引号的数字值将csv转换为json

时间:2018-08-15 14:18:13

标签: java jackson

我正在尝试使用杰克逊库将CSV转换为Java。但是,当我转换值时,整数值带有引号。如何解决这个问题。

CSV示例

data1,data2
Test,1
NewTest,2

我期待

[{
    "data1": "Test1",
    "data2": 1
}, {
    "data1": "NewTest",
    "data2": 2
}]

但是我得到

[{
    "data1": "Test1",
    "data2": "1"
}, {
    "data1": "NewTest",
    "data2": "2"
}]

2 个答案:

答案 0 :(得分:0)

Java对1"1"的处理方式不同。您将不得不将其转换为正确的数字。

try {
    return new JsonPrimitive(Long.parseLong(num)) // parse as a Long.
} catch (NumberFormatException e){
    return new JsonPrimitive(num); // it's not a number.
}

您可能还需要为Double添加支票。

答案 1 :(得分:0)

在JSON string 上,它仍然很容易做到:

String jsonWithNumbers(String json) {
    return json.replaceAll("(\"data2\": *)\"(\\d+)\"", "$1$2");
    //return json.replaceAll("(\"(data2|data4|data13)\": *)\"(\\d+)\"", "$1$2");
    //return json.replaceAll("(\"[^\"]+\": *)\"(\\d+)\"", "$1$2");
}