加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

从Java类创建JSON模式

发布时间:2020-12-14 05:03:13 所属栏目:Java 来源:网络整理
导读:我使用Gson将 java对象序列化/反序列化为json.我想在UI中显示它,并需要一个模式来做一个更好的描述.这将允许我编辑对象并添加比实际更多的数据. Gson可以提供json模式吗? 任何其他框架是否具有此功能? 解决方法 Gson图书馆可能不包含任何这样的功能,但您可
我使用Gson将 java对象序列化/反序列化为json.我想在UI中显示它,并需要一个模式来做一个更好的描述.这将允许我编辑对象并添加比实际更多的数据.
Gson可以提供json模式吗?
任何其他框架是否具有此功能?

解决方法

Gson图书馆可能不包含任何这样的功能,但您可以尝试解决您的问题与 Jackson库和 jackson-module-jsonSchema模块.例如,对于以下类:
class Entity {

    private Long id;
    private List<Profile> profiles;

    // getters/setters
}

class Profile {

    private String name;
    private String value;
    // getters / setters
}

这个程序:

import java.io.IOException;
import java.util.List;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;

public class JacksonProgram {

    public static void main(String[] args) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
        mapper.acceptJsonFormatVisitor(Entity.class,visitor);
        JsonSchema schema = visitor.finalSchema();
        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema));
    }
}

在模式下打印:

{
  "type" : "object","properties" : {
    "id" : {
      "type" : "integer"
    },"profiles" : {
      "type" : "array","items" : {
        "type" : "object","properties" : {
          "name" : {
            "type" : "string"
          },"value" : {
            "type" : "string"
          }
        }
      }
    }
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读