首页 > 解决方案 > Java 中的动态 JSON 生成

问题描述

我必须以 JSON 数据格式发送一批指令,如下所示:

{
   "batchId": "123456",
   "instructions": [ {
        "instructionId": "1",
        "customer": {
             "iban": "abc",
             "name": "abc"
          }
        },
        "instructionId": "2",
        "customer": {
             "iban": "abc",
             "name": "abc"
          }
        }
       .
       .
       .
 .. . . .. 
     ]
}

现在,我将通过查询从数据库中获取多条记录/指令,我将使用它按照上述格式生成 JSON 数据集。

我研究了什么:我已经遍历了许多解决方案,并想到了我自己的想法,我将创建一个带有 setter 和 getter 的指令映射的对象类。我将使用循环遍历每条记录,并通过 setter 从数据库中设置对象字段的值,并通过 getter 将完成对象条目的条目添加到 JSON。

我将继续这种方法,直到记录被完全读取。

我的问题是:此解决方案是否有效且是处理此类要求或任何其他建议的最佳解决方案?

请建议?任何类型的代码片段或帮助表示赞赏。

标签: javajson

解决方案


您可以为此使用com.google.gson

SerializedName如果您将不同的 json 名称映射到您的 java 字段(例如,instruction_id 到 instructionId),请创建指令对象,然后添加字段并注释该字段。

import com.google.gson.annotations.SerializedName;

import java.util.List;
import java.util.Map;

public class Instruction {
    
    @SerializedName("instructionId")
    private String instructionId;

    @SerializedName("customer")
    private List<Map<String, Object>> customer;

    public String getInstructionId() {
        return instructionId;
    }

    public void setInstructionId(String instructionId) {
        this.instructionId = instructionId;
    }

    public List<Map<String, Object>> getCustomer() {
        return customer;
    }

    public void setCustomer(List<Map<String, Object>> customer) {
        this.customer = customer;
    }
}

然后你可以将你的 json 映射到你的指令类。

Instruction instruction = new GsonBuilder()
        .setPrettyPrinting()
        .create()
        .fromJson(json, Instruction.class);

推荐阅读