48

我有一个 POJO 类:

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

是否有任何注释或开发框架/API 可以将 POJO 转换为 JSON 模式,如下所示:

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

我还可以"Required" : "Yes"通过在 POJO 上指定一些注释或配置来扩展模式以添加信息,例如每个字段的描述等,并且可以生成如下所示的 JSON 模式:

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

4 回答 4

12

Jackson JSON Schema 模块就是这样一种工具:

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

它使用 Jackson 数据绑定的 POJO 自省来遍历 POJO 属性,考虑到 Jackson 注释,并生成 JSON Schema 对象,然后可以将其序列化为 JSON 或用于其他目的。

于 2014-10-23T21:00:44.083 回答
6

Java JSON 模式生成器:https ://github.com/victools/jsonschema-generator

使用 Jackson 从 Java 类创建 JSON Schema(Draft 6、Draft 7 或 Draft 2019-09)。

于 2021-03-15T22:24:55.313 回答
2

使用 JJschema。它可以生成符合草案 4 的 JSON 模式。有关详细信息,请参阅此帖子http://wilddiary.com/generate-json-schema-from-java-class/

尽管Jackson Json Schema 模块也可以生成模式,但截至今天,它只能生成符合草案 3 的模式。

于 2015-11-05T18:55:13.073 回答
1
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;
    }
于 2018-10-29T10:30:20.127 回答