当前位置: 首页 > 面试题库 >

从Java类创建JSON模式

漆雕成弘
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 我的项目中有一些模型类,例如,等等,它们具有多个字段及其setter-getter方法,我需要 通过套接字 与客户端和服务器之间 来回交换这些类的对象作为JSONObject 。 有什么方法可以直接从模型类的对象创建,以使对象的字段成为键,而该模型类对象的值成为此JSONObject的值。 例: 我创建JSON对象为: 这让我有点像: 请注意,在我的某些模型类中,某些属性本身 是其他模

  • 我将JSON文件&JSON模式解析为AVRO模式。我有点困惑,我是否必须使用AVRO文档中定义的数据类型来编写手动AVRO模式。 或者是否有任何自动化的方法/函数/程序可以完全按照要求工作?

  • 有没有办法将数据帧模式序列化为json并在以后反序列化? 用例很简单:我有一个json配置文件,其中包含我需要读取的数据帧的模式。我希望能够从现有模式(在数据帧中)创建默认配置,并希望能够通过从json字符串读取来生成稍后使用的相关模式。

  • 问题内容: 我正在尝试使用jQuery UI创建动态菜单。 我将从JSON文件中获取条目并创建菜单项。在大规模尝试之前,我决定做一个小演示。这是我的小提琴,它按照我想要的方式工作。现在,我无法将其与JSON文件一起使用。 工作场所 这是JSON 我如何使用JSON中的值设计我的整个菜单,其中Li类似于以下内容。 编辑: 这个问题听起来好像我还没有尝试过,但是我已经尝试过。它只是我无法理解的JSON

  • 问题内容: 我想获得像这样的Hashtable的JSON表示形式: 结果是: 但是,如果将JSON字符串转换回去,则不会得到HashTable,而会得到PSCustomObject。 那么,如何可靠地序列化上述Hashmap? 问题答案: $json = @{Path=”C:\temp”; Filter=”*.js”} | ConvertTo-Json