проверить Java POJO, используя схему JSON или эквивалент? - PullRequest
0 голосов
/ 29 мая 2018

Это такой способ или технология, как схема JSON, в которой я получаю описание структуры данных в формате JSON и могу проверить в JAVA, если оно соответствует описанию.Мне нужно что-то вроде схемы JSON для проверки входящих данных, но я хочу проверить, что POJO или Карты как объекты Java, а не сам документ JSON.

Сделать POJO JSON просто для проверки, что это непрактический вариант, спасибо!

это способ сделать это с помощью схемы JSON или каких-либо других технологий?

ОБНОВЛЕНИЕ: РЕЗЮМЕ Насколько я знаю: JSON Schema - это документ JSON, используемый для проверки документов JSON.Я хочу, чтобы схема, написанная на JSON, проверяла Java POJO.

Пример ниже (я использую validate как статическую функцию класса Validator):

public static void main(String[] args) {
        String schema = "{\n" +
                "  \"type\": \"object\",\n" +
                "  \"properties\": {\n" +
                "    \"street_address\": { \"type\": \"string\" },\n" +
                "    \"city\":           { \"type\": \"string\" },\n" +
                "    \"state\":          { \"type\": \"string\" }\n" +
                "  },\n" +
                "  \"required\": [\"street_address\", \"city\", \"state\"]\n" +
                "}";
        Object foo = new Hashtable();

        ((Map)foo).put("street_address","first street");
        ((Map)foo).put("street_address","The city");
        ((Map)foo).put("street_address","Not the USA");

        Validator validator = new Validator(schema);

        if (Validator.validate(foo, schema)) {
            System.out.println("It's validated");
        } else
            System.err.println("It isn't validated");
    }

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Я только что натолкнулся на этот проект, который делает именно то, что вы просите: https://github.com/everit-org/json-schema

Это пример схемы:

{
    "type" : "object",
    "properties" : {
        "rectangle" : {"$ref" : "#/definitions/Rectangle" }
    },
    "definitions" : {
        "size" : {
            "type" : "number",
            "minimum" : 0
        },
        "Rectangle" : {
            "type" : "object",
            "properties" : {
                "a" : {"$ref" : "#/definitions/size"},
                "b" : {"$ref" : "#/definitions/size"}
            }
        }
    }
}

Пример JSON:

{
    "rectangle" : {
        "a" : -5,
        "b" : 5
    }
}

В этом случае бросок ValidationException будет указывать на #/rectangle/a.

try {
  schema.validate(rectangleSingleFailure);
} catch (ValidationException e) {
  // prints #/rectangle/a: -5.0 is not higher or equal to 0
  System.out.println(e.getMessage());
}
0 голосов
/ 14 августа 2018

Вы можете взглянуть на эту библиотеку .Вы можете проверить Java POJO по схемам JSON.Поддерживаются схемы JSON v3 и v4.

0 голосов
/ 29 мая 2018

Вы ищете OPEN API: https://github.com/OAI/OpenAPI-Specification

Это прежний инструмент SWAGGER (https://swagger.io), который позволяет определять объекты в JSON / YAML / XML.Это часто используется для:

  1. Документирования ваших API и объектов, которые вы можете получить
  2. Создание клиентских заглушек на основе структуры, определенной в JSON
  3. Помощь при созданиитестировать наборы, интегрируя JSON в другие инструменты (например: почтальон)
  4. и т. д.

Это позволяет вам не только документировать ваши POJO, но и многое другое.Это довольно мощный.

...