12 Nisan 2018 Perşembe

Jackson JsonSchema Sınıfı

Giriş
Şu satırı dahil ederiz.
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
Bir sınıfın tipini ve tüm alanlarını json formatında schema olarak yazar. Böylece java sınıfını python'a gönderebiliriz.

Örnek
Elimizde şöyle bir sınıf olsun.
import com.fasterxml.jackson.annotation.JsonProperty;

public class Person {

  @JsonProperty("name")
  private String name;

} 
Çıktı olarak şöyle bir json verir.
{
  "type" : "object",
  "id" : "urn:jsonschema:org:gradle:Person",
  "properties" : {
    "name" : {"type" : "string"}
  }
}
Örnek
Elimizde şöyle bir sınıf olsun.
public class Pojo {
  private String string = "default";
  public int integer = 1;
  public String getString(){
    return string;
  }
}
Çıktı olarak şöyle bir schema alırız.
{
  "type":"object",
  "id":"urn:jsonschema:Pojo",
  "properties":{
    "string":{"type":"string"},
    "integer":{"type":"integer"}
  }
}
constructor
Örnek
Şöyle yaparız.
public static String getJsonSchema (Class clazz) throws IOException {
  ObjectMapper mapper = new ObjectMapper();
  JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator(mapper);
  JsonSchema jsonSchema = jsonSchemaGenerator.generateSchema(clazz);
  return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonSchema);
}
Örnek
Şöyle yaparız.
ObjectMapper mapper= new ObjectMapper();
JsonSchemaGenerator generator = new JsonSchemaGenerator(mapper);
JsonSchema jsonSchema = generator.generateSchema(Pojo.class);
System.out.println(mapper.writeValueAsString(jsonSchema));
setId metodu
Eğer bir alanı dahil etmek istemezsek şöyle yaparız.
jsonSchema.setId(null);

Hiç yorum yok:

Yorum Gönder