Вложенный массив JSON в Java

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

{
"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;
}
}

1 ответ

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

    {
    "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.

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