繁体   English   中英

jsonschema2pojo:对象列表的类型创建

[英]jsonschema2pojo: type creation for list of objects

我正在使用 jsonschema2pojo(通过 gradle)从外部 json 模式生成 pojo,该模式具有具有以下定义的属性(在“对象”类型的另一个属性内)(字段名称和值已更改,但所有类型都相同):

"alternativeText": {
                    "type": "array",
                    "items": [{
                        "type": "object",
                        "required": [
                            "code",
                            "language",
                            "value"
                        ],
                        "properties": {
                            "code": {                               
                                "type": "integer",
                                "enum": [1, 2, 3, 4]                                
                            },
                            "language": {
                                "type": "string",
                                "enum": ["de-DE", "en-US"]
                            },
                            "value": {
                                "type": "string"
                            }
                        }
                    }],

生成以下 java 代码

 @JsonProperty("alternativeText")
    @Valid
    @NotNull
    private List<Object> alternativeText = new ArrayList<Object>();
    @JsonIgnore
    @Valid
    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();

这个接口并不理想,尤其是当消费者要针对“代码”和“语言”的枚举值进行验证时。

当枚举位于数组中时,我们会遇到类似的问题,然后 API 会生成List<Object>而不是例如List<SomeEnumType>

有什么可以配置来改进生成代码的语义吗? 对于具有“枚举”的其他属性(以及 object),它可以正常工作。 似乎枚举数组或对象数组被过度简化了。

看起来您不小心对项目使用了(旧的)元组语法。 尝试替换这个:

"items": [{

有了这个

"items": {

您的项目架构不应位于数组内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM