6 Mart 2018 Salı

Jackson JsonSchemaGenerator Sınıfı

Giriş
Şu satırı dahil ederiz.
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator;
constructor - ObjectMapper
Şöyle yaparız.
ObjectMapper mapper = new ObjectMapper();
JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator(mapper);
constuctor - ObjectMapper + JsonSchemaConfig
Şöyle yaparız.
ObjectMapper objectMapper = new ObjectMapper();
JsonSchemaConfig config = JsonSchemaConfig.nullableJsonSchemaDraft4();
JsonSchemaGenerator schemaGenerator = new JsonSchemaGenerator(objectMapper, config);
JsonNode jsonNode = schemaGenerator.generateJsonSchema(Test.class);
String jsonSchemaText = jsonNode.toString();
generateSchema metodu
Şöyle yaparız.
JsonSchema jsonSchema = jsonSchemaGenerator.generateSchema(Person.class);
rejectAdditionalProperties metodu
Elimizde şöyle bir sınıf olsun.
class A{
    private String s;
    private B b;

    public String getS() {
        return s;
    }

    public B getB() {
        return b;
    }
}
Şöyle yaparız.
ObjectMapper mapper = new ObjectMapper();
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
ObjectSchema schema = schemaGen.generateSchema(A.class).asObjectSchema();
schema.rejectAdditionalProperties();
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
Çıktı olarak şunu alırız
{
  "type" : "object",
  "id" : "urn:jsonschema:com.xxx.xxx:A",
  "additionalProperties" : false,
  "properties" : {
    "s" : {
      "type" : "string"
    },
  }
}

Hiç yorum yok:

Yorum Gönder