簡體   English   中英

Jackson JsonSchema - 對象作為模式中的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM