首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Jackson从POJO数组生成JSON模式

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

Stack Overflow用户
提问于 2018-03-01 22:27:49
回答 2查看 3.7K关注 0票数 2

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

代码语言:javascript
复制
JsonSchema schema = mapper.generateJsonSchema(MyClass[].class);

所以我希望得到JSON模式:

代码语言:javascript
复制
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string"
      },
      "text": {
        "type": "string"
      }
  ...

但是get:

代码语言:javascript
复制
{
      "type": "array"
}

如何获得期望的模式?

有没有更好的库可以从POJO生成模式?

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2018-03-01 23:53:51

从2.2版本开始就不再推荐使用JsonSchema,

如果您正在使用gradle或maven,请使用jackson-module-jsonSchema作为依赖项

代码语言:javascript
复制
compile "com.fasterxml.jackson.module:jackson-module-jsonSchema:2.9.0

然后你可以用这种方式创建你的模式:

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper();

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

String schemaText = mapper.writeValueAsString(schema);

这对你来说很有用

票数 9
EN

Stack Overflow用户

发布于 2018-10-29 18:33:45

代码语言:javascript
复制
//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;
    }
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49051831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档