Как добавить имя массива в веб-сервисах RestFul, используя Джерси - PullRequest
0 голосов
/ 22 октября 2018

Я использую инфраструктуру jersey для создания отдыхающих веб-сервисов.

Я возвращаю один массив, содержащий несколько JSONObject в качестве ответа.

Но мои запросы, я хочу добавить имя массивадо JSONObject.

Я получаю этот вывод:

[
    {
        "p1": "1",
        "p2": "AM",
        "p3": "Bad"
    },
    {
       "p1": "2",
        "p2": "PM",
        "p3": "Good"
    }
]

Но я ожидаю (нужно) это:

 {
    "result": [   {
                "p1": "1",
                "p2": "AM",
                "p3": "Bad"
            },
            {
               "p1": "2",
                "p2": "PM",
                "p3": "Good"
             }
            ]
        }

Это мой код:

Это мой класс объектов, в котором я устанавливаю метод получения и установки для сохранения значения в объекте.

public class Order implements Serializable{

    public Order() {
    }

    public Order(int id, String officialname, String contact_no) {
        this.p1 = p1;
        this.p2 = p2;
        this.p3 = p3;

    }
public int getp1() {
        return p1;
    }

    public void setp1(int p1) {
        this.p1 = p1;
    }
public int getp2() {
        return p2;
    }

    public void setp2(int p2) {
        this.p2 = p2;
    }
}

В OrderDao я устанавливаю параметр соединенияи метод для хранения значений результатов в массиве.

OrderDao.java

public class OrderDao {
    Connection conm=null;
    ResultSet rs = null;
     Statement statement = null;

    public  List<Order> getAll() {
        List<Order> order = null;
        try{
       conm= DBconnect.connectToDB();
       statement=conm.createStatement();
       rs=statement.executeQuery("SELECT * FROM `order`");

       order = new ArrayList<>();

        while (rs.next()) {
            int p1 = rs.getString(1);
            String p2 = rs.getString(2);
            String p3 = rs.getString(3);


            order.add(new Order(p1,p2,p3));

        }

        rs.close();
        statement.close();
        conm.close();
        }catch(Exception e){
            e.printStackTrace();
        }

        return order;

    }
}

Это мой вызов служб, где я на самом деле возвращаю набор результатов, используя@ Получить http метод

OrderDao orderDao = new OrderDao();
@GET
    @Path("/users")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Order> getAll() {
        return orderDao.getAll();
    }

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Это решение, которое я получил, показать имя массива перед JSONObject.

@GET
    @Path("/order")
    @Produces(MediaType.APPLICATION_JSON)

public Map<String,List<Order>> getAllorder(){
    List <Order> list = new ArrayList<>();
    List <Order> list = orderDao.getAll();
    LinkedHashMap<String,List<Order>> map = new LinkedHashMap<>();
    map.put("order", list);
    return map;
}

Это мой вывод:

{
    "result": [   {
                "p1": "1",
                "p2": "AM",
                "p3": "Bad"
            },
            {
               "p1": "2",
                "p2": "PM",
                "p3": "Good"
             }
            ]
        }
0 голосов
/ 22 октября 2018

Используйте Gson API для создания ожидаемого JSON.

@Path("/users")
@Produces(MediaType.APPLICATION_JSON)
    public String getAll() //change return type to String
    {  
    JsonObject listObj=new JsonObject();
    listObj.add("result", gson.toJsonTree(orderDao.getAll()));

    String responseJson=gson.toJson(listObj);
    return responseJson;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...