拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 从JSON生成Java 类

从JSON生成Java 类

白鹭 - 2021-11-06 2200 0 2

1. 概述

在某些情况下,我们需要使用JSON 文件创建Java 类,也称为POJO。这是可能的,而无需使用方便的**

在本教程中,我们将看到如何使用此库从JSON 对象创建Java 类。

2. 设置

jsonschema2pojo-core

<dependency>
 <groupId>org.jsonschema2pojo</groupId>
 <artifactId>jsonschema2pojo-core</artifactId>
 <version>1.1.1</version>
 </dependency>

3. JSON 到Java 类的转换

让我们看看如何使用jsonschema2pojo

首先,我们将创建一个方法convertJsonToJavaClass

  • 一个inputJson

  • 将生成POJO 的outputJavaClassDirectory

  • POJO 类所属的packageName

  • 输出POJOclassName

然后,我们将定义此方法中的步骤:

  • 我们将从创建JCodeModel

  • 然后,我们将定义jsonschema2pojogetSourceType

  • 此外,我们将此配置传递给RuleFactory

  • 我们将使用这个工厂和SchemaGenerator SchemaMapper

  • 最后,我们将调用JCodeModel build

让我们看看实现:

public void convertJsonToJavaClass(URL inputJsonUrl, File outputJavaClassDirectory, String packageName, String javaClassName)
 throws IOException {
 JCodeModel jcodeModel = new JCodeModel();
 GenerationConfig config = new DefaultGenerationConfig() { @Override
 public boolean isGenerateBuilders() { return true;
 }
 @Override
 public SourceType getSourceType() { return SourceType.JSON;
 }
 };
 SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
 mapper.generate(jcodeModel, javaClassName, packageName, inputJsonUrl);
 jcodeModel.build(outputJavaClassDirectory);
 }

4. 输入和输出

让我们使用这个示例JSON 来执行程序:

{ "name": "1ju.org", "area": "tech blogs", "author": "Eugen", "id": 32134, "topics": [ "java", "kotlin", "cs", "linux"
 ],
 "address": { "city": "Bucharest", "country": "Romania"
 }
 }

执行程序后,它会在给定目录中创建以下Java 类:

@JsonInclude(JsonInclude.Include.NON_NULL)
 @JsonPropertyOrder({"name", "area", "author", "id", "topics", "address"})
 @Generated("jsonschema2pojo")
 public class Input {
 @JsonProperty("name")
 private String name; @JsonProperty("area")
 private String area; @JsonProperty("author")
 private String author; @JsonProperty("id")
 private Integer id; @JsonProperty("topics")
 private List<String> topics = new ArrayList<String>(); @JsonProperty("address")
 private Address address; @JsonIgnore
 private Map<String, Object> additionalProperties = new HashMap<String, Object>();
 // getters & setters
 // hashCode & equals
 // toString
 }

**请注意,它因此也为嵌套的JSON 对象Address

@JsonInclude(JsonInclude.Include.NON_NULL)
 @JsonPropertyOrder({"city", "country"})
 @Generated("jsonschema2pojo")
 public class Address {
 @JsonProperty("city")
 private String city; @JsonProperty("country")
 private String country; @JsonIgnore
 private Map<String, Object> additionalProperties = new HashMap<String, Object>();
 // getters & setters
 // hashCode & equals
 // toString
 }

我们也可以通过简单地访问 工具采用JSON(或YAML)模式文档并生成DTO 样式的Java 类。它提供了许多您可以选择包含在Java 类中的选项,包括构造函数以及jsonschema2pojohashCode, equals,toString


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *