java-jsonschema2pojo:引用相同类型的对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-jsonschema2pojo:引用相同类型的对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2265字,纯文字阅读大概需要4分钟。
内容图文
我需要从JSON模式文件生成Java类,并遇到jsonschema2pojo.但是,在使用ref关键字时遇到了“问题”.
例如,如果我使用以下来自http://spacetelescope.github.io/understanding-json-schema/structuring.html#extending的架构:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"address": {
"type": "object",
"properties": {
"street_address": { "type": "string" },
"city": { "type": "string" },
"state": { "type": "string" }
},
"required": ["street_address", "city", "state"]
}
},
"type": "object",
"properties": {
"billing_address": { "$ref": "#/definitions/address" },
"shipping_address": { "$ref": "#/definitions/address" }
}
}
如预期的那样,它生成了一个名为您想要调用的名称的类,其中包含一个属性billingAddress和一个属性shippingAddress.
但是,即使两个属性都引用地址,它也会生成两个单独的类BillingAddress和ShippingAddress.因此,我宁愿具有地址类型的两个属性.
使用jsonschema2pojo是否可以实现?
解决方法:
更新资料
从here对javaType有了更好的理解之后,我只需在您的Address定义中添加javaType即可得到预期的结果.
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"address": {
"type": "object",
"javaType": "Address",
"properties": {
"street_address": { "type": "string" },
"city": { "type": "string" },
"state": { "type": "string" }
},
"required": ["street_address", "city", "state"]
}
},
"type": "object",
"properties": {
"billing_address": { "$ref": "#/definitions/address" },
"shipping_address": { "$ref": "#/definitions/address" }
}
}
用两个文件回答
您需要在Address.json中使用javaType,并为$billing_address和送货地址使用$ref.我建议您将地址定义分成单独的json,然后在billing_address和shipping_address中使用它.
地址.json
{
"$schema": "http://json-schema.org/draft-03/hyper-schema",
"additionalProperties": false,
"javaType": "whatever-package-name-you-have.Address"
"type": "object",
"properties": {
"street_address": { "type": "string", "required":true},
"city": { "type": "string", "required":true },
"state": { "type": "string", "required":true }
}
}
MainClass.json
{
"$schema": "http://json-schema.org/draft-03/hyper-schema",
"additionalProperties": false,
"type": "object",
"properties": {
"billing_address": {
"$ref":"Address.json",
"type": "object",
"required": false
},
"shipping_address": {
"$ref":"Address.json",
"type": "object",
"required": false
}
}
}
内容总结
以上是互联网集市为您收集整理的java-jsonschema2pojo:引用相同类型的对象全部内容,希望文章能够帮你解决java-jsonschema2pojo:引用相同类型的对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。