我必须从数据库中提取一些字段,这些字段表示来自同一地点的某些商店的详细信息。我需要它们以json格式输出。这是我的代码:
JSONObject result = null;
String sqlQuery = "SELECT STORE, LOCALITY, LATITUDE, LONGITUDE, ADDRESS, SCHEDULE"
+ " FROM STORE_LOCATIONS"
+ " WHERE LOCALITY = ?";
String connectionName = properties.getProperty(JNDI_NAME);
Connection connection = null;
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
connection = getJNDIConnection(connectionName);
pstmt = connection.prepareStatement(sqlQuery);
pstmt.setString(1, locality);
resultSet = pstmt.executeQuery();
if (resultSet.next()) {
result = new JSONObject();
do {
JSONObject jsonStore = new JSONObject();
jsonStore.put("store", resultSet.getString(1));
jsonStore.put("locality", resultSet.getString(2));
jsonStore.put("latitude", resultSet.getDouble(3));
jsonStore.put("longitude", resultSet.getDouble(4));
jsonStore.put("address", resultSet.getString(5));
jsonStore.put("schedule", resultSet.getString(6));
logger.debug("[{}] jsonStore={}", methodName, jsonStore);
result.append("stores", jsonStore);
} while(resultSet.next());
}
}
运行此代码之后,我的结果是在json数组中,我在result.append中给出了索引。就像这样:
{ “商店”:[ { “日程安排”:“”, “商店”:“又一家商店”, “地址”: ””, “地方”:“地方一”, “经度”:“”, “纬度”:“” }, { “日程安排”:“”, “商店”:“另一家商店”, “地址”: ””, “地方”:“地方一”, “经度”:“”, “纬度”:“” }, { “日程安排”:“”, “商店”:“一家商店”, “地址”: ””, “地方”:“地方一”, “经度”:“”, “纬度”:“” } ] }
我需要的是一个单个对象,它将是result.put的结果。但是,如果我这样写,它只给我一条记录,而不是指定地点的三条记录。 基本上,没有方括号。 你能救我吗?
答案 0 :(得分:0)
您的代码创建一个JSON数组,其中包含数据库中每条记录的字段。这是您必须收集多行数据并将ID为j的数组映射为存储的方法。如果要创建单个JSON对象来存储多个记录的数据,那么这将是繁琐的,因为您必须在JSON对象中创建唯一的密钥。为此,您必须添加一个标识符,以便为每个迭代中的每个字段创建唯一键,如下所示
{ "stores": { "schedule1": "", "store1": "Yet another store", "address1": "", "locality1": "Locality one", "longitude1":"" , "latitude1": "" }, { "schedule2": "", "store2": "Another store", "address2": "", "locality2": "Locality one", "longitude2":"" , "latitude2": "" }, { "schedule3": "", "store3": "One store", "address3": "", "locality3": "Locality one", "longitude3":"" , "latitude": "" } }
请参阅标识符(应为每个字段添加)Ex:添加schedule1 - 1以使其成为JSON对象的唯一属性。从JSON对象检索值时,这将变得更加困难。我建议不要切换到这个逻辑