JSON вставка фрагмента строки схемы [Джексон] - PullRequest
0 голосов
/ 12 марта 2020

Добрый вечер. Я пытаюсь вставить пользовательский фрагмент строки в схему JSON во время создания схемы. Вопрос в том, как я могу это сделать?

public class App {

    public static class House {
        @JsonProperty(value = "room")
        private Room room;
    }

    public static class Room {
        @JsonProperty(value = "length")
        private Attribute length;
    }

    @JsonFormat(shape = JsonFormat.Shape.OBJECT)
    public static class Attribute {

    }

    public static void main(String[] args) throws Exception {
        MappingJsonFactory factory = new MappingJsonFactory();
        ObjectMapper mapper = factory.getCodec();
        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
        JsonSchema schema = schemaGen.generateSchema(House.class);
        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema));
    }
}

Это сгенерирует схему JSON, например:

{
  "type" : "object",
  "id" : "urn:jsonschema:jsonModel:App:House",
  "properties" : {
    "room" : {
      "type" : "object",
      "id" : "urn:jsonschema:jsonModel:App:Room",
      "properties" : {
        "length" : {
          "type" : "object",
          "id" : "urn:jsonschema:jsonModel:App:Attribute"
        }
      }
    }
  }
}

Моя цель - вставить фрагмент строки для параметра "length". Моя цель - вставить динамическое содержимое c, например:

"anyOf": [
            { 
              "properties" : { 
                "name" : { "enum": [ "foo" ] },
                "value" : { "type" : "number", "minimum": 0, "maximum": 150}
              }
            },
            { 
              "properties" : { 
                "name" : { "enum": [ "foo2" ] },
                "value" : { "type" : "number", "minimum": 0, "maximum": 155}
              }
            },
          ]

Я пытался что-то сделать с:

Поэтому мне нужна помощь в этом вопросе, и я буду очень благодарен за любые предложения.

...