Generate JSON schema from Java class
Solution 1
One such tool is Jackson JSON Schema module:
https://github.com/FasterXML/jackson-module-jsonSchema
which uses Jackson databind's POJO introspection to traverse POJO properties, taking into account Jackson annotations, and produces a JSON Schema object, which may then be serialized as JSON or used for other purposes.
Solution 2
Java JSON Schema Generator: https://github.com/victools/jsonschema-generator
Creates JSON Schema (Draft 6, Draft 7 or Draft 2019-09) from Java classes using Jackson.
Solution 3
Use JJschema. It can generate draft 4 compliant JSON schemas. Refer this post http://wilddiary.com/generate-json-schema-from-java-class/ for details.
Though Jackson Json Schema module can too generate schema but it can, as of today, only generate draft 3 compliant schemas only.
Solution 4
public static String getJsonSchema(Class clazz) throws IOException {
Field[] fields = clazz.getDeclaredFields();
List<Map<String,String>> map=new ArrayList<Map<String,String>>();
for (Field field : fields) {
HashMap<String, String> objMap=new HashMap<String, String>();
objMap.put("name", field.getName());
objMap.put("type", field.getType().getSimpleName());
objMap.put("format", "");
map.add(objMap);
}
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(map);
return json;
}
Related videos on Youtube
user3587174
Updated on July 09, 2022Comments
-
user3587174 almost 2 years
I have a POJO class:
public class Stock { int id; String name; Date date; }
Are there any annotations or development framework/API that can convert POJO to JSON schema like below:
{"id": { "type" : "int" }, "name":{ "type" : "string" } "date":{ "type" : "Date" } }
And also I can expand the schema to add information like
"Required" : "Yes"
, description for each field, etc., by specifying some annotations or configurations on POJO and can generate JSON Schema like below:{"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" } }
-
eri0o over 9 yearsIS this what you are looking for? stackoverflow.com/questions/9593409/convert-pojo-to-json
-
user3587174 over 9 yearsNo, that converts pojo to json object. I am looking for generating JSON schema as meta [information about the input form fields mapped to pojo fields like datatype, whether it is required or not, etc., ] to the end users).
-
DwB over 9 yearsHere is an online site that will produce json schema from json: jsonschema.net
-
DwB over 9 yearspossible duplicate of Tool to generate JSON schema from JSON data
-
user3587174 over 9 yearsActually, I am not looking for any tools. I need an api that can have helper classes or annotations to describe the behavior of fields in a pojo. E.g. i recently found today that jackson 2.4.1 has new annotation @JsonPropertyDescription to add the description to the field in a pojo; [link]stackoverflow.com/questions/24515917/…. Is there a possible way to achieve the example in my post through reflection?
-
user3587174 over 9 yearsI noticed Jackson doesn't have this feature yet, so i chose to build metadata using reflection on the pojo.
-
StaxMan over 9 yearsJackson does have this functionality via JSON Schema module: github.com/FasterXML/jackson-module-jsonSchema
-
-
StormeHawke over 9 yearsThe module you specify doesn't work if you have complex objects containing enum types that need to stay enums. See my answer below for a better tool (Still Jackson, but jackson-mapper.) The instructions at your link result in Enums being rendered as simple strings in the schema
-
StaxMan over 9 yearsYes, I saw a bug report. I hope we get more contributors for the module -- it's external contribution, quite widely used, but no dedicated owner at this point.
-
mbknor over 7 yearsgithub.com/mbknor/mbknor-jackson-jsonSchema can generate Draft 4 schema based on Jackson annotations
-
Robert over 2 yearsDownvoted... not because it was a bad answer, just because it's a bad answer for today. This library is not being maintained anymore.