杰克逊:反序列化(解析)空Unicode
Posted
技术标签:
【中文标题】杰克逊:反序列化(解析)空Unicode【英文标题】:Jackson: deserializing (parsing) null Unicode 【发布时间】:2011-08-21 14:55:08 【问题描述】:我使用 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 对”)。
有什么方法可以告诉 Jackson 在反序列化中忽略 null Unicode?p>
【问题讨论】:
【参考方案1】:包含 null (\u0000) 的字符串由某些 Java 方法读取/打印,而不由其他方法读取/打印,因此它们仅显示为截断。所以该值可能实际上存在,但不会由 System.out.println() 之类的东西显示。
【讨论】:
确实如此。以上是关于杰克逊:反序列化(解析)空Unicode的主要内容,如果未能解决你的问题,请参考以下文章