为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

斯蒂芬大帝 2021-12-01 15:45:07
我正在使用 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.javapublic 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 回答

?
阿晨1998

TA贡献2037条经验 获得超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"

             }

            ]

        }


查看完整回答
反对 回复 2021-12-01
?
守候你守候我

TA贡献1802条经验 获得超10个赞

使用 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;

    }


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信