在JSON和/或XML反序列化期间保留部分原始内容

时间:2017-11-14 15:35:10

标签: java xml jackson gson fasterxml

我正在寻找一种机制,用于将具有多态值的地图的JSON表示反序列化为以下字符串{"name": "your doubles", "values": [25.0, 15.0]},并进入HashMap<String, Serializable>的实例。由于我无法将单个值类型传递给反序列化器(即使我知道它们),因为我希望保留原始的JSON字符串表示形式,将其单独反序列化为具体类型。我可以使用fastxml或GSON或任何其他能够以合理的方式完成工作的库。

我对XML序列化也有同样的问题。

因此,对于上面的示例,我想生成一个地图,其值等于Serializable"\"your doubles\""。实际上,我需要一个自定义反序列化器,只要找到需要反序列化为"[25.0, 15.0]"的节点,就会保留原始数据。

这个问题有一个直接的解决方案,这里是使用Gson:

Serializable

但是,如果我没有弄错,这个解决方案实际上解析了Gson gson = builder .registerTypeAdapter(Serializable.class, new SerializableDeserializer()) .create(); private static class SerializableDeserializer implements JsonDeserializer<Serializable> { @Override public Serializable deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { return json.toString(); } } 下的节点,然后将其序列化。因此,如果值很大,我将最终解析它两次。

此外,我无法使用fasterxml XML解析器为XML实现相同的解决方案。问题在于,如上所述,它实际上解析了节点,然后序列化又回来了,但是进入了JSON。

任何更好的JSON选项?

任何XML解决方案?

0 个答案:

没有答案