我正在使用jersey框架来构建宁静的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中的方法。
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();
}
答案 0 :(得分:0)
使用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;
}
答案 1 :(得分:0)
这是我得到的解决方案,在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"
}
]
}