Juneau provides the {@link oaj.json.JsonSchemaSerializer} class for generating JSON-Schema
documents that describe the output generated by the {@link oaj.json.JsonSerializer} class.
This class shares the same properties as JsonSerializer.
For convenience the {@link oaj.json.JsonSerializer#getSchemaSerializer()} method has been
added for creating instances of schema serializers from the regular serializer instance.
| public class Person {
|
| // Bean properties
| public String name;
| public Calendar birthDate;
| public List<Address> addresses;
|
| // Getters/setters omitted
| }
|
| public class Address {
|
| // Bean properties
| public String street, city;
| public StateEnum state;
| public int zip;
| public boolean isCurrent;
|
| // Getters/setters omitted
| }
The code for creating our POJO model and generating JSON-Schema is shown below:
| // Get the one of the default schema serializers.
| JsonSchemaSerializer serializer = JsonSchemaSerializer.DEFAULT_SIMPLE_READABLE;
|
| // Get the JSON Schema for the POJO.
| String jsonSchema = serializer.serialize(new Person());
|
| // This also works.
| jsonSchema = serializer.serialize(Person.class);
| {
| type: 'object',
| description: 'org.apache.juneau.sample.Person',
| properties: {
| name: {
| type: 'string',
| description: 'java.lang.String'
| },
| birthDate: {
| type: 'string',
| description: 'java.util.Calendar'
| },
| addresses: {
| type: 'array',
| description: 'java.util.LinkedList<org.apache.juneau.sample.Address>',
| items: {
| type: 'object',
| description: 'org.apache.juneau.sample.Address',
| properties: {
| street: {
| type: 'string',
| description: 'java.lang.String'
| },
| city: {
| type: 'string',
| description: 'java.lang.String'
| },
| state: {
| type: 'string',
| description: 'java.lang.String'
| },
| zip: {
| type: 'number',
| description: 'int'
| },
| isCurrent: {
| type: 'boolean',
| description: 'boolean'
| }
| }
| }
| }
| }
| }