Générer JSON schema à partir de la classe java

j'ai une classe POJO

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

y a-t-il des annotations ou un cadre de développement/api qui peuvent convertir POJO en JSON schema comme ci-dessous

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

et aussi je peux étendre le schéma pour ajouter des informations comme" requis":" Oui", description pour chaque champ, etc., en spécifiant quelques annotations ou configurations sur POJO et peut générer des schémas JSON comme ci-dessous.

{"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"
      }
}
22
demandé sur user3587174 2014-10-05 08:50:20

3 réponses

j'ai eu besoin de le faire moi-même, mais j'avais besoin d'obtenir le dernier schéma spec (v4 à partir de ce post). Ma solution est la première réponse au lien ci-dessous: Générer du Json Schema de POJO avec un twist

Utiliser des objets à partir de l'organisation.codehaus.Jackson.paquet carte plutôt que le com.fasterxml.Jackson.paquet databind. Si vous suivez les instructions sur cette page alors vous le faites mal. Utilisez simplement le jackson-mapper module à la place.

voici le code pour les futurs googleurs:

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);
}
19
répondu StormeHawke 2017-05-23 12:18:18

un de ces outils est Jackson JSON Schema module:

https://github.com/FasterXML/jackson-module-jsonSchema

qui utilise L'introspection POJO de Jackson databind pour parcourir les propriétés POJO, en tenant compte des annotations Jackson, et produit un objet JSON Schema, qui peut ensuite être sérialisé comme JSON ou utilisé à d'autres fins.

5
répondu StaxMan 2014-10-23 21:00:44

Utilisez JJschema. Il peut générer des schémas JSON conformes à l'ébauche 4. Voir ce message http://wilddiary.com/generate-json-schema-from-java-class / for details.

Si Jackson Json Schema du module peut aussi créer le schéma, mais il peut, dès aujourd'hui, seulement de générer des projets de 3 conforme schémas uniquement.

2
répondu Drona 2015-11-07 03:51:06