对于奇怪的情况,这是一种奇怪的问题。我有一个大型 JSON 结构,我想在运行 groovy 代码中表示它。我需要与 JSON 对象具有相同结构的 groovy 对象。
正如所料,网络搜索主要返回带有 groovy/json 运行时转换内容的结果,但没有关于输出 groovy 代码的内容。
您可能会认为这很懒,但实际上它是一个庞大的 JSON 结构!转换器将节省几天!
您可以使用 Groovy 自己的JsonSlurper
来解析 JSON 对象:
import groovy.json.*
def json = '{"name":"john", "surname":"doe", "languages": ["groovy", "python"]}'
def obj = new JsonSlurper().parseText(json)
assert obj.name == "john"
assert obj.surname == "doe"
assert obj.languages.containsAll("python", "groovy")
当然这个类是无类型的:它只在运行时知道。如果您希望它被键入,您可以编写一个基于示例编写代码的代码(因为json 模式可能很少见)。
编辑:如果您想生成模型类代码,您可以尝试JSONGen,它“解析 JSON 以创建客户端源文件以对 JSON 数据结构进行建模”。我不知道 Groovy 的解决方案,但由于 java-groovy 集成是无缝的,它应该可以正常工作。
如果您想要 JSON 的 Groovy 表示,您可以通过内置的JsonSlurper 获得。这将为您提供可以使用的 Java 地图和数据列表。
您可以使用(第 3 方)Jackson 的数据绑定功能填充您编写的更具体的自定义对象以表示您的 JSON 实体(也请参阅此问题)。