假设您具有以下json代码段
ERROR_ALREADY_EXISTS
乍看之下,似乎{
"topic":"foo",
"payload":"{\"type\":\"String\",\"value\":\"44\"}",
"type":"ItemStateEvent"
}
已两次转换为json字符串。天真的方法是在整个代码段上两次调用解析函数。第一次是整个事件,第二次是payload
字段。
现在要提出的问题是:如何配置所选的解析器,以便它可以为您做些琐碎的工作?
答案 0 :(得分:0)
Jackson,java json解析库,似乎支持每个字段反序列化器。结果,您可以将@JsonDeserialize(using = NestedDeserializer.class)
添加到特定的“嵌套” json字段。 NestedDeserializer
是com.fasterxml.jackson.databind.JsonDeserializer
的实现。目前,我正在尝试以下实现:
@Override
public LinkedHashMap<String, String> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
ObjectMapper m = (ObjectMapper) p.getCodec(); // am I sure that codec will always be ObjectMapper?
TextNode textNode = m.readTree(p);
LinkedHashMap<String, String> datum = m.readValue(textNode.asText(), LinkedHashMap.class);
return datum;
}
代码段的作用是将当前令牌反序列化为字符串,然后再次通过解析器运行它。