将数据库详细信息转换为JSON对象

Ami*_*rad 1 java json

我有一张表有列

recordID,recordName,titleFeild,titleIDMap,titleId,titleStartDate,titleEndDate,languageId

现在我将上面列中的数据转换为JSON对象数据,如下所示

{
  "recordId" :10,
  "recordName" : "RECORDS",
  "records" : [ {
    "titleField" : 1,
    "titleIDMap" : null,
    "titleId" : 500,
    "titleStartDate" : "2013-12-22T00:00:00.000+0000",
    "titleEndDate" : "2013-12-03T00:00:00.000+0000",
    "languageId" : 20
  }]
}
Run Code Online (Sandbox Code Playgroud)

请注意,记录是一个列数组(titleFeild,titleIDMap,titleId,titleStartDate,titleEndDate,languageId)

到目前为止我开发的代码是

    List<Object[]> objList = dao.getStatus();
    Integer result = null;
     JSONObject jsonData = new JSONObject();
     JSONArray jsonDataArray = new JSONArray();
    if(objList!=null && objList.size()>10000)
        {
            for (Object[] nameObj : objList) {

                jsonData.put("", nameObj.get(arg0) );


            }
        }
Run Code Online (Sandbox Code Playgroud)

如何从列数据构造JSON对象?

Pop*_*ibo 5

您可以使用google-gson库轻松实现此目的.简单来说,你必须创建一些Pojos(参考另一个包含引用列表).

考虑RecordIDRecordName作为元数据.

创建一个pojo代表此信息:

public class DbMetaPojo {

    private int recordID;
    private String recordName;
    private List<Record> records;

    public List<Record> getRecords() {
        return records;
    }

    public void setRecords(List<Record> records) {
        this.records = records;
    }

    public String getRecordName() {
        return recordName;
    }

    public void setRecordName(String recordName) {
        this.recordName = recordName;
    }

    public int getRecordID() {
        return recordID;
    }

    public void setRecordID(int recordID) {
        this.recordID = recordID;
    }

}
Run Code Online (Sandbox Code Playgroud)

pojo使用实际Record字段创建另一个:

public class Record {

    public int getTitleFeild() {
        return titleFeild;
    }

    public void setTitleFeild(int i) {
        this.titleFeild = i;
    }

    public String getTitleIDMap() {
        return titleIDMap;
    }

    public void setTitleIDMap(String titleIDMap) {
        this.titleIDMap = titleIDMap;
    }

    public int getTitleId() {
        return titleId;
    }

    public void setTitleId(int titleId) {
        this.titleId = titleId;
    }

    public String getTitleStartDate() {
        return titleStartDate;
    }

    public void setTitleStartDate(String titleStartDate) {
        this.titleStartDate = titleStartDate;
    }

    public String getTitleEndDate() {
        return titleEndDate;
    }

    public void setTitleEndDate(String titleEndDate) {
        this.titleEndDate = titleEndDate;
    }

    public int getLanguageId() {
        return languageId;
    }

    public void setLanguageId(int languageId) {
        this.languageId = languageId;
    }

    private int titleFeild;
    private String titleIDMap;
    private int titleId;
    private String titleStartDate;
    private String titleEndDate;
    private int languageId;

}
Run Code Online (Sandbox Code Playgroud)

现在只是POJOs用相关数据填充您的方法(用您的数据检索替换硬编码逻辑):

public static void main(String... main) {
        DbMetaPojo obj = new DbMetaPojo();

        obj.setRecordID(10);
        obj.setRecordName("RECORDS");

        Record record = new Record();

        record.setLanguageId(20);
        record.setTitleEndDate("2013-12-22T00:00:00.000+0000");
        record.setTitleFeild(1);
        record.setTitleId(500);
        record.setTitleIDMap("SOME NULL");
        record.setTitleStartDate("2013-12-22T00:00:00.000+0000");

        List<Record> list = new ArrayList<Record>();
        list.add(record);
        obj.setRecords(list);

        Gson gson = new Gson();

        String json = gson.toJson(obj);

        System.out.println(json);
    }
Run Code Online (Sandbox Code Playgroud)

输出是您形成的JSON:

{
    "recordID": 10,
    "recordName": "RECORDS",
    "records": [
        {
            "titleFeild": 1,
            "titleIDMap": "SOME NULL",
            "titleId": 500,
            "titleStartDate": "2013-12-22T00:00:00.000+0000",
            "titleEndDate": "2013-12-22T00:00:00.000+0000",
            "languageId": 20
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

编辑:

要与代码对齐,您可能需要执行以下操作:

List<Object> objList = dao.getStatus();
        List<DbMetaPojo> metaList = new ArrayList<DbMetaPojo> ();
        if (objList != null && objList.size() > 10000) {
            for (Object nameObj : objList) {
                DbMetaPojo meta = new DbMetaPojo();
                meta.setRecordID(nameObj[0]);
                meta.setRecordName(nameObj[0]);
                ...
                ...
                ...

                metaList.add(meta);
            }
        }
Run Code Online (Sandbox Code Playgroud)