代码之家  ›  专栏  ›  技术社区  ›  Harshal Deshmukh

如何使用Jersey在RESTful Web服务中添加数组名

  •  0
  • Harshal Deshmukh  · 技术社区  · 6 年前

    我正在使用Jersey框架构建RESTful Web服务。

    我将返回一个包含多个JSONObject的ArrayList作为响应。

    但我的查询是,我想在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"
                 }
                ]
            }
    

    这是我的代码:

    这是我的对象类,我在其中设置getter和setter来存储对象中的值。

    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中,我正在设置连接参数和方法,以便将结果值存储在arraylist中。

    OrthoDo.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;
    
        }
    }
    

    这是我的服务调用,我使用@get http方法实际返回结果集

    OrderDao orderDao = new OrderDao();
    @GET
        @Path("/users")
        @Produces(MediaType.APPLICATION_JSON)
        public List<Order> getAll() {
            return orderDao.getAll();
        }
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Tarun darkpbj    6 年前

    使用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;
        }
    
        2
  •  0
  •   Harshal Deshmukh    6 年前

    这就是我得到的解决方案, 在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"
                 }
                ]
            }