schema2 online example convert json jackson jsonschema fasterxml jackson-modules

online - json to java



Generar esquema JSON desde la clase java (4)

Me encontré con la necesidad de hacerlo yo mismo, pero necesitaba obtener la última especificación de esquema (v4 a partir de esta publicación). Mi solución es la primera respuesta en el siguiente enlace: generar un esquema Json a partir de POJO con un toque

Use objetos del paquete org.codehaus.jackson.map en lugar del paquete com.fasterxml.jackson.databind. Si estás siguiendo las instrucciones en this página, entonces lo estás haciendo mal. Solo usa el módulo jackson-mapper en su lugar.

Aquí está el código para futuros googlers:

private static String getJsonSchema(Class clazz) throws IOException { org.codehaus.jackson.map.ObjectMapper mapper = new ObjectMapper(); //There are other configuration options you can set. This is the one I needed. mapper.configure(SerializationConfig.Feature.WRITE_ENUMS_USING_TO_STRING, true); JsonSchema schema = mapper.generateJsonSchema(clazz); return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema); }

Tengo una clase de pojo

public class Stock{ int id; String name; Date date; }

¿Hay alguna anotación o marco de desarrollo / api que pueda convertir POJO a un esquema JSON como el siguiente?

{"id": { "type" : "int" }, "name":{ "type" : "string" } "date":{ "type" : "Date" } }

y también puedo expandir el esquema para agregar información como "Requerido": "Sí", descripción para cada campo, etc., especificando algunas anotaciones o configuraciones en POJO y puedo generar un esquema JSON como el siguiente.

{"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" } }


Una de esas herramientas es el módulo de esquema Jackson JSON:

this

que utiliza la introspección POJO de Jackson databind para atravesar las propiedades de POJO, teniendo en cuenta las anotaciones de Jackson, y produce un objeto de esquema JSON, que luego se puede serializar como JSON o usar para otros fines.


Utilice JJschema. Puede generar proyectos de 4 esquemas JSON compatibles. Consulte esta publicación en http://wilddiary.com/generate-json-schema-from-java-class/ para obtener más información.

Aunque this también puede generar un esquema, a partir de hoy, solo puede generar esquemas de borrador 3 compatibles.


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; }