Подтвердить что ты не робот

Создание схемы JSON из класса java

У меня класс POJO

public class Stock{
 int id;
 String name;
 Date date;
}

Есть ли какие-либо аннотации или рамки разработки /api, которые могут конвертировать POJO в схему JSON, как показано ниже.

{"id":
      {             
        "type" : "int"
      },
"name":{   
        "type" : "string"
       }
"date":{
        "type" : "Date"
      }
}

а также я могу расширить схему, чтобы добавить информацию типа "Обязательный": "Да", описание для каждого поля и т.д., указав некоторые аннотации или конфигурации на POJO и может генерировать схему JSON, как показано ниже.

{"id":
      {             
        "type" : "int",
        "Required" : "Yes",
        "format" : "id must not be greater than 99999",
        "description" : "id of the stock"
      },
"name":{   
        "type" : "string",
        "Required" : "Yes",
        "format" : "name must not be empty and must be 15-30 characters length",
        "description" : "name of the stock"
       }
"date":{
        "type" : "Date",
        "Required" : "Yes",
        "format" : "must be in EST format",
        "description" : "filing date of the stock"
      }
}
4b9b3361

Ответ 1

Я столкнулся с необходимостью сделать это сам, но мне нужно было получить последнюю спецификацию схемы (v4 на этом посту). Мое решение - это первый ответ по ссылке ниже: Создайте Json Schema из POJO с помощью твиста

Используйте объекты из пакета org.codehaus.jackson.map, а не пакет com.fasterxml.jackson.databind. Если вы следуете инструкциям на странице this, вы делаете это неправильно. Просто используйте модуль jackson-mapper.

Здесь код для будущих googlers:

private static String getJsonSchema(Class clazz) throws IOException {
    org.codehaus.jackson.map.ObjectMapper mapper = new ObjectMapper();
    //There are other configuration options you can set.  This is the one I needed.
    mapper.configure(SerializationConfig.Feature.WRITE_ENUMS_USING_TO_STRING, true);

    JsonSchema schema = mapper.generateJsonSchema(clazz);

    return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
}

Ответ 2

Одним из таких инструментов является модуль Jackson JSON Schema:

https://github.com/FasterXML/jackson-module-jsonSchema

который использует интроспекцию POJO для базы данных Jackson для обработки свойств POJO с учетом аннотаций Джексона и создает объект JSON Schema, который затем может быть сериализован как JSON или использован для других целей.

Ответ 3

Используйте JJschema. Он может создавать схемы, совместимые с 4-мя JSON. Подробнее см. В этом сообщении http://wilddiary.com/generate-json-schema-from-java-class/.

Хотя модуль схемы Джексона Json может также генерировать схему, но на сегодняшний день он может генерировать только схемы с 3-мя совместимыми сценариями.