java - 从 json 模式动态生成 JSON

标签 java json spring spring-boot gson

我需要从数据库读取数据并将其以 JSON 格式发送到某个 MQ。 我正在使用java 8,spring boot。 我当前的流程--

从数据库读取数据 ---> 映射到 POJO --->使用对象映射器 (Jackson) 转换为 JSON

上面的问题是如果 JSON 结构发生变化,我的 Pojo 类需要更改。

我该如何避免呢? 下面是我拥有的 JSON 架构。假设某个字段被添加到该架构中。如何避免代码更改? 我可以让它变得动态吗?例如。假设某些字段被添加到 fname、lname 或地址中。如何避免代码更改?

{
    "name":   {
                "fname" :  {
                             "displayName":"FirstName",
                             "dataType":"String"
                           }
                "lname"  : {
                             "displayName":"LastName",
                             "dataType":"String"
                           }
               },
    "address": {
                   "displayName":"Address",
                   "dataType":"String"
               }
  }

最佳答案

  • 添加 GSON 依赖项
  • 要使其 pretty-print ,请使用 GsonBuilder()-> GsonBuilder().setPrettyPrinting().create();
  • toJson(对象)

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
    </dependency>
    
    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    Person person = newPerson();
    String jsonString = gson.toJson(person);
    System.out.println(jsonString);
    
    
    private static Person newPerson() {
     List<String> hobbies = Arrays.asList("Cricket", "Guitar", "Coin Collection");
     Map<String, String> languages = new HashMap<>();
     languages.put("French", "Beginner");
     languages.put("German", "Intermediate");
     languages.put("Spanish", "Advanced");
     Person person = new Person("Max", 22, hobbies, languages);
     return person;
    }
    

关于java - 从 json 模式动态生成 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62434773/

相关文章:

java - 是否可以查询 Java VM 以找到最大可能的数组大小?如何?

java - Java和Javascript计算结果的差异

json - 启用 mod_deflate 时,Apache 2.4.7 未发送 304 响应

java - 多部分文件上传 Spring Boot

java - bean 的类属性中的属性占位符

java - 使用 RESTEasy 处理格式错误的@QueryParam

java - Matlab 和 JDDE

json - WCF WebInvoke 方法 POST

json - 将列中的结果设置为列名称

java - 带有 AcceptHeaderLocaleResolver 和 i18n 的 Spring Security