Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jackson读取包含空字段或空白字段的JSON数组_Java_Arrays_Json_Jackson - Fatal编程技术网

Java 使用jackson读取包含空字段或空白字段的JSON数组

Java 使用jackson读取包含空字段或空白字段的JSON数组,java,arrays,json,jackson,Java,Arrays,Json,Jackson,我正在使用解析一个jsonString,如下所示: { "key": "Flowers", "colorized": true, "values": [ [1472428800000, , "#aaaaaa", "", ""], //empty or blank field [1472515200000, , "#bbbbbb", "", ""], //empty or blank field [1472601600000, , "#cccccc", "

我正在使用解析一个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)
Jackson抛出一个异常:

com.fasterxml.jackson.core.JsonParseException: 
Unexpected character (',' (code 44)): 
expected a valid value (number, String, array, object, 'true', 'false' or 'null')
在我看来,这是因为空白或空白字段。在web上搜索只能找到
null、[]或{}
字段的解决方案,但不能完全为空

问题:如何实现Jackson解析字符串并将这些空字段视为
null

EDIT1:

我用过

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20140107</version>
</dependency>

org.json
json
20140107

过去,在jsonString上使用该库调用
newJSONObject(jsonString)
,效果很好。我想把注意力集中在杰克逊身上,因为他的表现而摆脱这种依赖。我相信Jackson也能以某种方式处理它。

您可以通过此配置获得所需的行为:

mapper.enable(JsonParser.Feature.ALLOW_MISSING_VALUES);
根据:

允许\u缺少\u值
该功能允许支持“缺失”值 在JSON数组中:缺少值表示两个逗号的序列,没有 值介于两者之间,但只能选择空白


缺少的值在
JsonNode

中显示为
null
,您不能这样做,因为这是无效的JSON。您需要回到创建JSON的人或任何人那里,并将其修复。@Joe C我编辑了我的答案。其他JSON库似乎可以很好地处理它。是一个方便的在线JSON解析器-只需将示例粘贴到那里(删除注释)并尝试验证它。它不是有效的JSON。其他LIB可能会解析它,您可能会通过它,但如果这些LIB决定在将来清理它们的行为,那么您可能会遇到问题。这正是我所寻找的。非常感谢。