避免使用 jsonschema2pojo 和 sourceType "json" 生成重复的类



按照这里的说明,我使用jsonschema2pojo Maven插件从JSON示例文件生成Java类。

我的JSON示例文件的结构如下

{
"coffeeTable": {
"book": [
{
"author": "Aldo Rossi",
"title": "The Architecture of the City"
}
]
},
"bookCase": [
{
"book": [
{
"author": "Shakespeare",
"title": "Collected Works"
}
]
}
]
}

当从JSON示例生成Java类时,将生成类Book和类Book__1Book是用来放咖啡桌上的书的。Book__1用于书柜中的元素。我在文档中看到了在使用JSON模式文件生成Java类时避免重复类的解决方案。当直接使用JSON对象生成代码时,我没有找到解决方案。是否可以实现只有一个Book类,它在两个地方都使用,由上面的JSON对象生成?或者我必须从JSON对象创建一个JSON模式对象,然后在那里使用javaType/existingJavaType注释来实现这一点?

在这种情况下,您可以制作两个独立的json模式,并在另一个模式中引用一个:

房间.json

{
"title": "room",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "room.json",
"type": "object",
"properties": {
"coffeeTable": {
"type": "array",
"items": {
"$ref": "book.json"
}
},
"bookCase": {
"type": "array",
"items": {
"$ref": "book.json"
}
}
}
}

和book.json

{
"title": "Book",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "book.json",
"type": "object",
"properties": {
"author": {
"type": "string"
},
"title": {
"type": "string"
}
}
}

这将生成2个java文件:Room.java&Book.java

最新更新