[英]Jackson JsonSchema - Object as string in schema
我正在使用JSR 385 參考實現中的ComparableQuantity
- 這不是一個例子,只是想提一下子類型是通用的,我不能修改它。
情況是我正在使用Jackson JsonSchemaModule生成一個 Json 模式。 目前,我從該模式中收到的內容當然如下所示:
{
"weight": {
"type": "object",
"id": "Mass>",
"required": true,
"properties": {
"value": {
"type": "number"
},
"unit": {
"type": "object",
"id": "Mass>",
"properties": {
"name": {
"type": "string"
},
...
}
}
}
}
}
Ofc,這並沒有給我很多 - 它太具有表現力了。 我已經有一個解析器,它可以從字符串(帶驗證)創建我的值並將其序列化為字符串(10m 將在 json 中只是“10 m”),並且我想要具有相同的模式,例如模式:
{
"weight": {
"type": "string",
"pattern": "[\\d,.]+\\s*(kg|t)",
"required": true
}
}
我知道Jdk8JacksonModule
可以制作與Optional
類似的東西,但是當我看到Jdk8OptionalBeanPropertyWriter
,我已經通過了 - 甚至不確定它是否是正確的地方。
另外,我認為可以使用ObjectMapper$acceptJsonFormatVisitor
,也許是SchemaFactoryWrapper#expectObjectFormat
- 不確定。
我注意到的是,當我將ComparableQuantity
序列化模塊添加到 Schema 序列化器(實際上是模式中的類序列化)時,它將返回
{
"weight": {
"type": "any",
"required": true
}
}
所以也許這是某種方式......
任何例子都會很好:)。
我已經與重寫方法完成JsonSerializer#acceptJsonFormatVisitor
,我叫visitor.expectStringFormat(type)
,而且,加我加了一個模式visitor
在構造函數中JsonSchemaGenerator
。
此訪問者基於com.fasterxml.jackson.module.jsonSchema.customProperties.ValidationSchemaFactoryWrapper
,但當然不是expectObjectFormat
覆蓋expectStringFormat
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.