我正在寻找一种机制,用于将具有多态值的地图的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解决方案?