如何拦截Jackson JsonNodes反序列化

时间:2017-08-07 18:47:04

标签: java jackson

在我的计划中,我正在做:

private static final ObjectMapper MAPPER = new GridJettyObjectMapper();
....
JsonNode node = MAPPER.readTree(content);

我的JSON包含很多SAME字符串,我想拦截readTree()方法并放入TextNodes缓存的字符串(例如使用WeakHashMap)。

我希望这会为我节省很多钱。现在我的应用程序只是OOME,在堆转储中我在TextNodes中看到数百万个相同的字符串。

知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

经过一些调试后,我更换了

JsonNode node = MAPPER.readTree(content);

Pojo p = MAPPER.readValue(Pojo.class, new PojoDeserializer());

在PojoDeserializer逻辑中实现,不生成许多TextNodes。 我使用了JsonParser流API。