2014-01-07 2 views
0

Мне нужно извлечь из базы данных некоторые поля, которые означают детали некоторых магазинов из той же местности. Мне нужны они в формате json для вывода. Вот мой код:Как использовать json put as append

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.Like это:

{ «магазины» : [ { "расписание": "", "магазин": "Еще один магазин", "адрес": "", "локальность": "Местность один", "долгота": "", "широта": "" }, {"Расписание": "", "магазин": "Еще один магазин", "адрес": "", "локальность": "Местность один", "долгота": "", "широта": " " }, { "расписание": "", "магазин": "Один магазин", "адрес": "", "локальность": "Местность один", "долгота":"», "широта": ""} ] }

Что мне нужно я s - единственный объект, который будет результатом result.put. Но если я напишу это так, это даст мне только одну запись, а не три для указанной локальности. В основном, без квадратной скобки. Вы можете мне помочь?

ответ

0

Ваш код создает массив JSON, содержащий поля каждой записи в базе данных. Это то, как вам нужно собирать данные для нескольких строк и сопоставлять массив JSON с идентификатором в качестве магазинов. Если вы хотите создать один объект 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. Я бы рекомендовал не переключаться на эту логику

+0

Спасибо за ваш ответ @Octopus. Итак, вы говорите, что формат, который я получил обратно, в порядке? –

+0

да, абсолютно – Keerthivasan

+0

Добро пожаловать :) – Keerthivasan