gpt4 book ai didi

java - 带有任何字段到 POJO 的 Json 模式

转载 作者:行者123 更新时间:2023-12-01 13:45:16 24 4
gpt4 key购买 nike

我想知道为具有“anyOf”字段的 Json 模式生成 POJO 的推荐方法是什么?
例如,给定以下 json 模式:
爱好.json

{
"anyOf": [
{ "type": {"$ref": "./exercise.json" } },
{ "type": {"$ref": "./music.json" } }
]
}
练习.json
{
"type": "object"
"properties" {
"hobbyType": {"type": "string"}
"exerciseName": { "type": "string" },
"timeSpent": { "type": "number" },
"place": { "type": "string" }
}
}
音乐.json
{
"type": "object"
"properties" {
"hobbyType": {"type": "string"}
"instrument": { "type": "string" },
"timeSpent": { "type": "number" }
}
}
如何为 Hobby.java 生成 POJO与 jackson ?

最佳答案

我认为有两种方法看起来很自然:
一种方法是生成一个类层次结构 Hobby,其中公共(public)字段 timeSpent 和 Music/Exercise 是具有特定字段的子类。
另一种是将这些领域“联合”成一个单一的爱好。
两者在语义上都是不正确的,这意味着您可以提出 JSON 模式验证正确但 Jackson 抛出错误或 POJO 中由于省略字段而缺少信息的情况。
所以我认为这里最好的方法是使用 Map 而不是 pojos。
例如,如果一个人有一个爱好,那么这个人 POJO 可能是:

class Person {
String name;
...
Map<String, Object> hobby;
或 List hobbies> 如果一个人可以有多个爱好。

关于java - 带有任何字段到 POJO 的 Json 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63319783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com