猿问

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

我正在使用 jersey 框架来构建宁静的 Web 服务。


我正在返回一个包含多个 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"

             }

            ]

        }

这是我的代码:


这是我的对象类,我在其中设置 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 中,我正在设置用于将结果值存储在数组列表中的连接参数和方法。


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;


    }

}

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


OrderDao orderDao = new OrderDao();

@GET

    @Path("/users")

    @Produces(MediaType.APPLICATION_JSON)

    public List<Order> getAll() {

        return orderDao.getAll();

    }


斯蒂芬大帝
浏览 169回答 2
2回答

阿晨1998

这是我得到的解决方案,在 JSONObject 之前显示数组名称。@GET&nbsp; &nbsp; @Path("/order")&nbsp; &nbsp; @Produces(MediaType.APPLICATION_JSON)public Map<String,List<Order>> getAllorder(){&nbsp; &nbsp; List <Order> list = new ArrayList<>();&nbsp; &nbsp; List <Order> list = orderDao.getAll();&nbsp; &nbsp; LinkedHashMap<String,List<Order>> map = new LinkedHashMap<>();&nbsp; &nbsp; map.put("order", list);&nbsp; &nbsp; return map;}这是我的输出:{&nbsp; &nbsp; "result": [&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "p1": "1",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "p2": "AM",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "p3": "Bad"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"p1": "2",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "p2": "PM",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "p3": "Good"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp; &nbsp; &nbsp; &nbsp; }

守候你守候我

使用 Gson API 创建预期的 JSON。@Path("/users")@Produces(MediaType.APPLICATION_JSON)&nbsp; &nbsp; public String getAll() //change return type to String&nbsp; &nbsp; {&nbsp;&nbsp;&nbsp; &nbsp; JsonObject listObj=new JsonObject();&nbsp; &nbsp; listObj.add("result", gson.toJsonTree(orderDao.getAll()));&nbsp; &nbsp; String responseJson=gson.toJson(listObj);&nbsp; &nbsp; return responseJson;&nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答