使用动态数组名称创建JSON对象

时间:2017-11-21 13:50:01

标签: java json

我正在尝试从数据库创建一个JSON对象,但我正在努力使用数组名称。 创建的JSON对象应如下所示:

{
 "Table_name":{ "table_column_name":Value}
}

例如,如果我们有一个名为Test的表和一个值为123的列ID:

{ "Test" : { "ID":123}}

我的代码是:

public static JSONArray extractToJson(ResultSet rs) throws SQLException {
    JSONArray json = new JSONArray();

    resultmetadata = rs.getMetaData();
    while (rs.next()) {

        JSONObject obj = new JSONObject();
        JSONObject obj2 = new JSONObject();

        for (int i = 1; i <= resultmetadata.getColumnCount(); i++) {
            String column_name_title = resultmetadata.getColumnName(i);
            String column_name = resultmetadata.getColumnName(i);

            if (resultmetadata.getColumnType(i) == java.sql.Types.ARRAY) {
                obj.put(column_name_title, rs.getArray(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.BIGINT) {
                obj.put(column_name_title, rs.getInt(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.BOOLEAN) {
                obj.put(column_name_title, rs.getBoolean(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.BLOB) {
                obj.put(column_name_title, rs.getBlob(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.DOUBLE) {
                obj.put(column_name_title, rs.getDouble(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.FLOAT) {
                obj.put(column_name_title, rs.getFloat(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.INTEGER) {
                obj.put(column_name_title, rs.getInt(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.NVARCHAR) {
                obj.put(column_name_title, rs.getNString(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.VARCHAR) {
                obj.put(column_name_title, rs.getString(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.TINYINT) {
                obj.put(column_name_title, rs.getInt(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.SMALLINT) {
                obj.put(column_name_title, rs.getInt(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.DATE) {
                obj.put(column_name_title, rs.getDate(column_name));
            } else if (resultmetadata.getColumnType(i) == java.sql.Types.TIMESTAMP) {
                obj.put(column_name_title, rs.getTimestamp(column_name));
            } else {
                obj.put(column_name_title, rs.getObject(column_name));
            }

        }
        json.put(obj);

    }
    return json;
}

它产生的JSON如下:

 {
  "ID": 123,
 }

这个JSON文件不会创建任何表名,而且它是我们必须拥有的。

1 个答案:

答案 0 :(得分:0)

你必须使用像obj2这样的另一个对象。做一些像:

obj2.put("Test",obj);