Java 使用jackson读取包含空字段或空白字段的JSON数组
我正在使用解析一个jsonString,如下所示: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", "
{
"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决定在将来清理它们的行为,那么您可能会遇到问题。这正是我所寻找的。非常感谢。