【问题标题】:XSD to Java POJO, it created a custom String classXSD 到 Java POJO,它创建了一个自定义 String 类
【发布时间】:2015-12-08 12:10:23
【问题描述】:

所以,我有许多定义健康相关规范的 XSD 文件。他们来自这里。 https://www.hl7.org/fhir/downloads.html

我在 Eclipse 中使用 JAXB 生成了一些 Java POJO,但在命令行中使用 xic 命令是一样的。

我遇到的问题是它创建了 700 多个类,其中包括一些非常基本的 java 类型。

它不会与java.lang.String 类链接,而是创建一个新的org.hl7.fhir.String 类。 该类将有一个“值”字段,其中包含一个普通的String

所以当我想使用我的对象时,我最终会得到那种令人费解的代码。 my object.getCode().getValue()StringBoolean 似乎都这样做了。

这不仅不方便,还意味着当我尝试编组/解组相应的 json 对象时,它们必须遵守那个额外的嵌套级别。

使用像这样可怕的东西

{
  "id": {"value":"example-search"},
  "event": {
    "type": {
      "system": {"value":"http://hl7.org/fhir/audit-event-type"},
      "code": {"value":"rest"},
      "display": {"value":"Restful Operation"}
    },...

而不是更清洁。

{
  "id": "example-search",
  "event": {
    "type": {
      "system": "http://hl7.org/fhir/audit-event-type",
      "code": "rest",
      "display": "Restful Operation"
    },...

有什么想法吗?非常感谢

【问题讨论】:

    标签: json xsd jaxb pojo hl7-fhir


    【解决方案1】:

    从同一个下载页面,您还可以获取 Java 参考实现。参考实现经过调整,使与简单类型的交互更加自然,为 getter、setter 等使用语言约定。作为奖励,它们还将支持解析和序列化 JSON。我们设计了 FHIR 架构,以便您可以从架构生成代码,但参考实现将为您提供更好的体验。

    【讨论】:

    • 这听起来很棒,而且比自己生成要好得多。一个潜在的问题是如何注释这些资源类。假设我想使用 Patient 类并使用 java 注释进行一些微调以适应我们的其他要求。例如,我可以使用@JsonIgnore 隐藏性别并使用@Pattern(regex) 添加一些名称验证吗?全部放置在 MWPatient 中被覆盖的相关吸气剂上,它是 ca.uhn.fhir.model.dstu2.resource.Patient 的子类?非常感谢
    • 嗨 Mikael,如果您只是不想使用某些字段(例如性别字段),则不需要。如果您没有在其中输入值,HAPI 解析器(序列化器)将不会对性别字段进行编码。如果需要,您还可以子类化 Patient 类 - 由于前面的部分,无需将某些内容标记为已忽略,但如果您想将它们标记为不需要,则可以覆盖和弃用方法。
    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多