我可以在自定义Jackson解串器中添加对象吗

时间:2019-08-26 20:03:56

标签: java json jackson

我需要将JSON字符串解析为Java。这是一个动态菜单解析,我必须在其中检查元素“角色”,以查看是否将其包含在最终的Java HashMap中。

我认为我想在反序列化时检查权限,因此我不必再次遍历整个树,而无需拉出“未授权”菜单项。

因此,我编写了一个自定义解串器,如下所示:

public Map<String,List<MenuItem>> deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException {
  etc...
  if(objNode.get("permission")!=null) {
    item.setType(objNode.get("type").asText());
  }
}

我这样称呼它:

ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addDeserializer(Map.class, new NavigationDeserializer());
mapper.registerModule(module);
json = getJson();
nav = (Map<String, List<MenuItem>>) mapper.readValue(json, new TypeReference<Map<String,List<MenuItem>>>(){});

但是,我需要在反序列化器本身中嵌入一些可以访问安全系统(即服务)的东西。

想法?

0 个答案:

没有答案