【问题标题】:How to set the type of Json schema?如何设置 Json 模式的类型?
【发布时间】:2011-12-12 08:07:13
【问题描述】:

我有一个由 Jackson 通过代表 Json 类创建的 Json Schema(如下所示)。

"startDate" : {
  "type" : "number"
},
"endDate" : {
  "type" : "number"
},

但我希望startDateendDate 的类型是字符串而不是数字或整数。有什么方法可以实现吗?

谢谢。

【问题讨论】:

  • 你能帮助我们更好地理解你的背景吗?该架构是根据您不拥有的对象描述生成的?
  • 当然。我有一个 Pojo 类,它有 2 个 XMLgregorianCalendar 数据类型的变量,我在 Jackson 方法的帮助下使用 Pojo 类生成 Json Schema——generateJsonSchema()。我得到的输出就像上面提到的(即 Json 模式中的 startDate 和 endDate 的类型应该是字符串)。相反,它是 NUMBER。现在我希望输出具有字符串类型。当然,我不想在我的 POJO 中更改变量的数据类型。在任何情况下都有可能吗?

标签: java json type-conversion jackson jsonschema


【解决方案1】:

您需要展示您的原始 Java 对象以获取更多信息。

无论如何,Jackson 中 JSON 模式生成的可配置性是有限的;但如果它被移动到一个模块中,可以做更多的事情,包括添加大量的可配置性。随时欢迎贡献。

【讨论】:

  • 感谢您的欢迎。当然。为了让您了解我的问题,以下是我的 POJO 中的变量 (4)。受保护的字符串empID;受保护的字符串 empname;受保护的字符串名称;受保护的 XMLGregorianCalendar doj;并且在杰克逊将 POJO 转换为 Json 模式时,我得到了所有变量(期望 doj)的预期输出。 { .... "doj" : { "type" : "number" } } 现在我想将这个特定类型从 Number 更改为 String。希望现在我清楚了。
  • 嗯。我不知道肯定会起作用的方法;但是有'SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS'——启用它可能有帮助吗?否则我建议使用'@JsonSerialize(as=String.class)',但这可能会破坏序列化。
  • @staxman 现在它是一个模块,现在这可能吗?谢谢。
  • @MridangAgarwalla 我建议你试试看。我不知道,JSON Schema Module 本身在这一点上没有维护者,并且可能会被弃用,因为有更好的外部工具。
猜你喜欢
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 2019-04-15
  • 2016-01-21
  • 1970-01-01
  • 2020-09-14
相关资源
最近更新 更多