Jackson JsonSerializer无法处理深度嵌套对象层级问题
问题:Jackson序列化器在深层级对象中失效
我使用Jackson Library进行Java对象实例序列化,已为Player.class、Vehicle.class和Building.class分别构建对应的JsonSerializer,并将其注册到SimpleModule中,随后通过ObjectMapper的convertValue()方法映射实例。
该流程多数情况下运行良好,ObjectMapper可自动识别对应类的实例并调用注册的序列化器。但存在问题:当对象层级超过一定深度时,序列化器失效。例如,Vehicle直接在Player对象的列表中可正常序列化;但若位于Player实例的另一个列表的子项(如parkedVehicles)中,则无法被序列化器识别。
对象层级示意图:
代码示例:
Player p = ...; ObjectMapper mapper = new ObjectMapper().configure(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS, true); ObjectNode objectNode = mapper.createObjectNode(); SimpleModule module = new SimpleModule(); module.addSerializer(Player.class, new PlayerSerialization()); module.addSerializer(Building.class, new BuildingSerialization()); module.addSerializer(Vehicle.class, new VehicleSerialization()); mapper.registerModule(module); objectNode.set("player", mapper.convertValue(p, ObjectNode.class));
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

