如何在没有链 DOMAIN_OBJECT->DTO->JSON 的情况下将域对象映射到多个变体 JSON 对象(多个 DTO)?我有一个大的领域对象和十多个表示变体。当我使用 structMap 将域对象映射到特定的 DTO,然后使用 jackson 序列化为 JSON 时,我花了很多时间。
是否有任何工具可以将域对象映射到多个变体 JSON,而无需中间层 DTO?
最佳答案
我不太了解您的用例,但请注意,如果您使用 Jackson,我假设您正在使用 ObjectMapper
。 ObjectMapper
是一个昂贵的对象,您应该尽可能多地重用它(因此,将其声明为 static
和 final
),因为它做了很多事情当同一个对象被转换很多次时,在后台进行缓存。
更好的是,从 ObjectMapper
获取一个 ObjectWriter
和/或 ObjectReader
,它们是不可变的且线程安全的(ObjectMapper 很棘手,如果如果您想在运行时更改其配置),它们应该会提高您的性能。
最后一件事,但我从来没有走那么远,你可以编写自定义序列化器/反序列化器,但我发现复杂性明显上升(因此,维护起来会更加困难)。
如果您正在使用字符串,请仔细检查您是否使用了 StringBuilder(或多线程用例中的 StringBuffer),并仅在必要时才进行日志记录 (if(logger.isDebugEnabled() { log.debug(... ) }
),它们是导致性能下降的常见陷阱。
关于Java 将对象映射到 JSON 的几种变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587827/