我使用Jackson反序列化(解析)一个简单的JSON事件,代码如下:
JsonParser parser = ... // Initialized via JsonFactory for simple JSON String
ObjectMapper mapper = new ObjectMapper();
HashMap<String, Object> attributes = mapper.readValue(parser,
new TypeReference<HashMap<String, Object>>() {});
除了JSON输入包含Unicode空值(\ u0000)之外,代码对我测试过的几种情况的预期效果如此。
更具体地说,如果上面的JSON字符串具有包含Unicode的键值对,例如
{
... (start K-V pairs),
"UniKey":"\u0000...",
... (end K-V pairs)
}
解析器正确地将所有“开始KV对”(其中不包含空Unicode)读入属性HashMap,但在遇到“UniKey”的空Unicode值时立即停止反序列化,返回空值并且从不解析其余的JSON字符串(即“结束KV对”)。
有没有办法告诉杰克逊在反序列化中忽略空Unicode? p>
答案 0 :(得分:1)
包含null(\ u0000)的字符串由某些Java方法读取/打印,而不是由其他方法读取/打印,因此它们仅显示为截断的。因此,该值实际上可能存在,但不会像System.out.println()那样显示。