我有一个项目,我需要使用Jackson和GSON(可切换)支持将模型类序列化为JSON。
除了简单地将这些模型类转换为JSON之外,我还需要通过添加/删除某些键来操作(根据用户输入)。
我正在考虑将我的模型类(以及删除/添加数据的逻辑)转换为简单的java.util.Map
并将它们转换为JSON。哪个有用。
要将这些模型类转换为杰克逊的java.util.Map
,我正在做:
Map<String, Object> jsonMap =
mapper.convertValue(object, new TypeReference<Map<String, Object>() {})
和GSON:
JsonElement jsonElement = gson.toJsonTree(object);
Map<String, Object> jsonMap =
gson.fromJson(jsonElement, new TypeToken<Map<String, Object>>(){}.getType());
在操作地图中的数据之后,我执行以下操作以将地图实际序列化为JSON字符串:
// Jackson
mapper.writeValueAsString(jsonMap);
// GSON
gson.toJson(jsonMap);
将模型Object
转换为Map
而不是杰克逊JsonNode
(mapper.convertValue(object, ..)
与mapper.valueToTree(object)
相比,是否会影响效果
是否可以使用GSON直接将模型Object
转换为Map
?现在我首先创建一个JsonElement
,然后将其转换为Map
。
答案 0 :(得分:0)
杰克逊ObjectNode
在内部使用LinkedHashMap
(ArrayNode
使用ArrayList
),因此这些方法之间应该没有太大区别。 JsonNode
模型可以比“&#34; raw&#34; List
和Map
s;但另一方面,有一个薄的包装器,增加了一些内存使用...所以最后事情可能会出来。