2017-01-15 13 views
0

Мне нужно создать ответ json, как показано ниже. Я попытался с некоторым кодом, но не смог получить то, что мне нужно. Нужна помощь в Java коде, чтобы создать вложенную массив группы пищевых продуктов по категориям, наряду с деталями категории, как в ниже JSONВложенный массив JSON в Java

{ 
"menu": { 
"items": [{ 
     "id": 1, 
     "code": "hot1_sub1_mnu", 
     "name": "Mutton", 
     "status": "1", 
     "sub_items": [{ 
      "id": "01", 
      "name": "Mutton Pepper Fry", 
      "price": "100" 
     }, { 
      "id": "02", 
      "name": "Mutton Curry", 
      "price": "100" 
     }] 
    }, 
    { 
     "id": "2", 
     "code": "hot1_sub2_mnu", 
     "name": "Sea Food", 
     "status": "1", 
     "sub_items": [{ 
      "id": "01", 
      "name": "Fish Fry", 
      "price": "150" 
     }] 
    }, 
    { 
     "id": "3", 
     "code": "hot1_sub3_mnu", 
     "name": "Noodles", 
     "status": "1", 
     "sub_items": [{ 
      "id": "01", 
      "name": "Chicken Noodles", 
      "price": "70" 
     }, { 
      "id": "02", 
      "name": "Egg Noodles", 
      "price": "60" 
     }] 
    } 
] 
} 
} 

Что я пытался до сих пор дам ответ в одном массиве.

@Path("/items") 
public class HotelsMenu { 
@GET 
@Path("/getitems") 
@Produces(MediaType.APPLICATION_JSON) 
public String doLogin(@QueryParam("hotelcode") String hotelcode) { 

JSONObject response = new JSONObject(); 
JSONArray hotelDetails = checkCredentials(hotelcode); 
try { 
    response.put("hotels", hotelDetails); 
    response.put("status", (hotelDetails == new JSONArray()) ? "false" : "true"); 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
return response.toString(); 
} 

private JSONArray checkCredentials(String hotelcode) { 
System.out.println("Inside checkCredentials"); 

JSONArray result = new JSONArray(); 

    try { 
     result = DBConnection.checkItems(hotelcode); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

return result; 
} 

public static JSONArray checkItems(String hotelcode) throws Exception { 
int id; 
String code = hotelcode + "_mnu"; 
String name = null; 
String name1 = null; 
String status; 
String price; 

Connection dbConn = null; 
Connection dbConn1 = null; 
JSONArray hotels = new JSONArray(); 
JSONArray menu = new JSONArray(); 
try { 
    try { 
     dbConn = DBConnection.createConnection(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    Statement stmt = dbConn.createStatement(); 
    String query = "SELECT * FROM " + code + " where Status='1'"; 
    System.out.println(query); 
    ResultSet rs1 = stmt.executeQuery(query); 
    System.out.println("hai"); 

    while (rs1.next()) { 

     JSONObject hotel = new JSONObject(); 
     id = rs1.getInt("Id"); 
     hotel.put("id", id); 
     code = rs1.getString("Code"); 
     System.out.println(code); 
     hotel.put("code", code); 
     name = rs1.getString("Name"); 
     hotel.put("name", name); 
     status = rs1.getString("Status"); 
     hotel.put("status", status); 
     hotels.put(hotel); 
     System.out.println("Hotel1:" + hotels); 
     try { 
      dbConn1 = DBConnection.createConnection(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     Statement stmt1 = dbConn1.createStatement(); 
     String query1 = "SELECT * FROM " + code + " where Status='1' "; 
     System.out.println(query1); 
     ResultSet rs2 = stmt1.executeQuery(query1); 

     while (rs2.next()) { 

      JSONArray hotel1 = new JSONArray(); 
      JSONObject hotelmenu = new JSONObject(); 
      id = rs2.getInt("Id"); 
      hotelmenu.put("id", id); 
      name1 = rs2.getString("Name"); 
      hotelmenu.put("name", name1); 
      price = rs2.getString("Price"); 
      hotelmenu.put("price", price); 
      hotel1.put(hotelmenu); 

      hotels.put(hotel1); 

      System.out.println(hotels); 
     } 

    } 
} catch (SQLException sqle) { 
    throw sqle; 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    if (dbConn != null) { 
     dbConn.close(); 
    } 
    throw e; 
} finally { 
    if (dbConn != null) { 
     dbConn.close(); 
    } 
} 
return hotels; 
} 
} 
+0

Структура JSON вы хотите недействителен JSON. Пожалуйста, отправьте действительный JSON, иначе трудно понять, чего вы действительно хотите. Мой совет: не смешивайте массивы и объекты в одной структуре. Создайте свою объектную модель и сопоставьте ее с JSON. В Java вы не будете использовать список, содержащий значения смешанного типа. Сделайте то же самое с JSON. –

ответ

0

Как следует из предыдущих ответов, вы должны перепроектировать свою модель. Я просто быстро переделал его. Проверьте, если это служит вашей цели -

{ 
"menu": { 
    "items": [{ 
      "id": 1, 
      "code": "hot1_sub1_mnu", 
      "name": "Mutton", 
      "status": "1", 
      "sub_items": [{ 
       "id": "01", 
       "name": "Mutton Pepper Fry", 
       "price": "100" 
      }, { 
       "id": "02", 
       "name": "Mutton Curry", 
       "price": "100" 
      }] 
     }, 
     { 
      "id": "2", 
      "code": "hot1_sub2_mnu", 
      "name": "Sea Food", 
      "status": "1", 
      "sub_items": [{ 
       "id": "01", 
       "name": "Fish Fry", 
       "price": "150" 
      }] 
     }, 
     { 
      "id": "3", 
      "code": "hot1_sub3_mnu", 
      "name": "Noodles", 
      "status": "1", 
      "sub_items": [{ 
       "id": "01", 
       "name": "Chicken Noodles", 
       "price": "70" 
      }, { 
       "id": "02", 
       "name": "Egg Noodles", 
       "price": "60" 
      }] 
     } 
    ] 
}} 

Если структура ОК, дайте знать, если вы хотите помочь с кодом Java для генерации выше Json.

Также возможно пройти через следующие библиотеки - Jackson tutorial и Gson tutorial

+0

Это точный формат, который мне нужен. Пожалуйста, помогите с java-кодом – Ana

Смежные вопросы