我正在使用Jackson来解析看起来像这样的jsonString:
{
"key": "Flowers",
"colorized": true,
"values": [
[1472428800000, , "#aaaaaa", "", ""], //empty or blank field
[1472515200000, , "#bbbbbb", "", ""], //empty or blank field
[1472601600000, , "#cccccc", "", ""], //empty or blank field
[1472688000000, 1, "#dddddd", "", ""], //field not empty or blank anymore
[1472774400000, 2, "#eeeeee", "", ""],
[1472860800000, 3, "#ffffff", "", ""],
[1472947200000, 4, "#aaaaaa", "", ""]
]
}
当我使用JsonNode jsonNode = mapper.readTree(jsonString)
杰克逊抛出异常时:
com.fasterxml.jackson.core.JsonParseException:
Unexpected character (',' (code 44)):
expected a valid value (number, String, array, object, 'true', 'false' or 'null')
在我看来,这是因为空场或空白场。搜索网络仅为null, [] or {}
但不完全空白的字段提供了解决方案。
问题:我如何实现Jackson分析字符串并将这些空字段视为""
或null
?
EDIT1:
我用过
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
过去并且在jsonString上使用该库调用new JSONObject(jsonString)
工作得很好。我想专注于杰克逊并因性能而摆脱这种依赖。我相信杰克逊能够以某种方式处理它。
答案 0 :(得分:2)
您可以使用此配置获得所需的行为:
mapper.enable(JsonParser.Feature.ALLOW_MISSING_VALUES);
根据Jackson docs:
ALLOW_MISSING_VALUES
功能允许支持“缺失”值 在JSON数组中:缺少值意味着两个逗号的序列,没有 中间值,但只有可选的空格
缺失值在null
JsonNode