首页 > 解决方案 > 在 Groovy 中使用 JsonBuilder 序列化 java.nio.file.Path

问题描述

我正在尝试序列化一个包含java.nio.file.Pathand实例的对象path它是一个接口,我正在接收一个StackOverflow Exception

我已经检查了这个答案:https ://stackoverflow.com/a/36966590/11325201 并想为我的用例实现一个类型适配器,groovy但我没有找到JsonBuilder' 的等价GsonBuilderregisterTypeAdapterregisterTypeHierarchyAdapter

如何在 Groovy 中实现类似的解决方案?

标签: javajsongroovyjson-serializationjsonbuilder

解决方案


您可以JsonGenerator在构建对象时将对象传递给构建器。这个对象允许你指定各种选项,包括类型转换器,你用Class和 闭包注册。在此示例中,转换器仅调用toStringPath 上的 。

def generator = new JsonGenerator.Options()
                                 .addConverter(Path) { Path p -> p.toString() }
                                 .build()                 

def json = new JsonBuilder(myObjContainingPathProperties, generator).toPrettyString()

JsonGenerator的在线 GroovyDocs没有显示任何内容(可能是 3.0 版中的 GroovyDoc 生成器错误),但2.5 版的 GroovyDocs 可以工作


推荐阅读