我想使用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生成模式?
在此先感谢您的帮助!
答案 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;
}