使用jackson读取带有空或空白字段的JSON数组

时间:2017-01-11 22:10:36

标签: java arrays json jackson

我正在使用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)工作得很好。我想专注于杰克逊并因性能而摆脱这种依赖。我相信杰克逊能够以某种方式处理它。

1 个答案:

答案 0 :(得分:2)

您可以使用此配置获得所需的行为:

mapper.enable(JsonParser.Feature.ALLOW_MISSING_VALUES);

根据Jackson docs

  

ALLOW_MISSING_VALUES
  功能允许支持“缺失”值   在JSON数组中:缺少值意味着两个逗号的序列,没有   中间值,但只有可选的空格

缺失值在null

中显示为JsonNode