使用Jackson从POJO数组生成JSON模式

时间:2018-03-01 14:27:49

标签: java arrays json jackson jsonschema

我想使用Jackson 2.7.0从POJO数组生成JSON模式:

JsonSchema schema = mapper.generateJsonSchema(MyClass[].class);

所以我希望得到JSON架构:

{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string"
      },
      "text": {
        "type": "string"
      }
  ...

但是得到:

{
      "type": "array"
}

如何获得预期的架构? 是否存在更好的库来从POJO生成模式?
在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

自版本JsonSchema以来,

2.2已被弃用 如果您使用gradle或maven,请使用jackson-module-jsonSchema作为依赖

compile "com.fasterxml.jackson.module:jackson-module-jsonSchema:2.9.0

然后您可以用这种方式创建架构:

ObjectMapper mapper = new ObjectMapper();

JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
JsonSchema schema = schemaGen.generateSchema(MyClass[].class);

String schemaText = mapper.writeValueAsString(schema);

这对你有用

答案 1 :(得分:0)

//Using below code you can custom json schema
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;
    }