Я использую фреймворк для создания удобных веб-сервисов.
Я возвращаю один массив, содержащий несколько объектов 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 я настраиваю параметр подключения и метод для сохранения значений результатов в 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();
}
2 ответа
Это решение, которое у меня есть, показать имя массива перед 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"
}
]
}
Используйте 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;
}
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].