我正在研究 SpringMVC 框架。我有 JSONController 用于返回这样的字符串对象
@RequestMapping(value = "/getOrder/{username}", method = RequestMethod.GET)
@ResponseBody
public String getOrderByDeliverymanUsername(@PathVariable("username") String s) throws JSONException {
JSONObject orderJsonObject = new JSONObject();
JSONObject productJsonObject = new JSONObject();
JSONObject restaurantJsonObject = new JSONObject();
JSONArray restaurantArray = new JSONArray();
JSONArray productArray = new JSONArray();
orderJsonObject.put("customerLatitude", orderService.getOrderByDeliverymanUsername(s).getOrderLat());
orderJsonObject.put("customerLongitude", orderService.getOrderByDeliverymanUsername(s).getOrderLon());
orderJsonObject.put("customerName", orderService.getOrderByDeliverymanUsername(s).getMember().getMemberName());
orderJsonObject.put("orderDescription", orderService.getOrderByDeliverymanUsername(s).getOrderAddressDescription());
orderJsonObject.put("totalprice", orderService.getOrderByDeliverymanUsername(s).getTotalPrice());
List<Restaurant> restaurantList = new ArrayList<Restaurant>();
for (Restaurant restaurant : orderService.getOrderByDeliverymanUsername(s).getRestaurants()) {
restaurantList.add(restaurant);
}
for (Restaurant restaurant : restaurantList) {
try {
restaurantJsonObject.put("restaurantID", restaurant.getId());
restaurantJsonObject.put("restaurantName", restaurant.getRestaurantName());
restaurantJsonObject.put("restaurantLatitude", restaurant.getRestaurantLat());
restaurantJsonObject.put("restaurantLongitude", restaurant.getRestaurantLon());
} catch (NullPointerException e){
restaurantJsonObject.put("restaurantID", 0);
restaurantJsonObject.put("restaurantName", 0);
restaurantJsonObject.put("restaurantLatitude", 0);
restaurantJsonObject.put("restaurantLongitude", 0);
}
restaurantArray.put(restaurantJsonObject);
}
for(ProductInCart product : orderService.getOrderByDeliverymanUsername(s).getProductsInCart()){
productJsonObject.put("productName",product.getProduct().getProductName());
productJsonObject.put("productPrice",product.getProduct().getProductPrice());
productArray.put(productJsonObject);
}
orderJsonObject.put("products", productArray);
orderJsonObject.put("restaurants", restaurantArray);
return orderJsonObject.toString();
}
我不知道为什么 restaurantArray 和 productArray 中的对象是重复的。前任。
{
customerName : "Pitak",
totalprice : 4863,
orderDescription : "some where",
restaurants : [{
restaurantLatitude : 33.1414,
restaurantID : 3,
restaurantLongitude : 44.5555,
restaurantName : "Nong hoi"
}, {
restaurantLatitude : 33.1414,
restaurantID : 3,
restaurantLongitude : 44.5555,
restaurantName : "Nong hoi"
}
],
products : [{
productPrice : 35,
productName : "Khao kha mu"
}, {
productPrice : 35,
productName : "Khao kha mu"
}, {
productPrice : 35,
productName : "Khao kha mu"
}, {
productPrice : 35,
productName : "Khao kha mu"
}
],
customerLatitude : 66.0956,
customerLongitude : 88.45671
}
谢谢大家,对不起我的英语。
解决!!我只是将 JsonObject 移动到循环中
@RequestMapping(value = "/getOrder/{username}", method = RequestMethod.GET)
@ResponseBody
public String getOrderByDeliverymanUsername(@PathVariable("username") String s) throws JSONException {
JSONObject orderJsonObject = new JSONObject();
JSONArray restaurantArray = new JSONArray();
JSONArray productArray = new JSONArray();
orderJsonObject.put("customerLatitude", orderService.getOrderByDeliverymanUsername(s).getOrderLat());
orderJsonObject.put("customerLongitude", orderService.getOrderByDeliverymanUsername(s).getOrderLon());
orderJsonObject.put("customerName", orderService.getOrderByDeliverymanUsername(s).getMember().getMemberName());
orderJsonObject.put("orderDescription", orderService.getOrderByDeliverymanUsername(s).getOrderAddressDescription());
orderJsonObject.put("totalprice", orderService.getOrderByDeliverymanUsername(s).getTotalPrice());
List<Restaurant> restaurantList = new ArrayList<Restaurant>();
for (Restaurant restaurant : orderService.getOrderByDeliverymanUsername(s).getRestaurants()) {
restaurantList.add(restaurant);
}
for (Restaurant restaurant : restaurantList) {
JSONObject restaurantJsonObject = new JSONObject();
try {
restaurantJsonObject.put("restaurantID", restaurant.getId());
restaurantJsonObject.put("restaurantName", restaurant.getRestaurantName());
restaurantJsonObject.put("restaurantLatitude", restaurant.getRestaurantLat());
restaurantJsonObject.put("restaurantLongitude", restaurant.getRestaurantLon());
} catch (NullPointerException e){
restaurantJsonObject.put("restaurantID", 0);
restaurantJsonObject.put("restaurantName", 0);
restaurantJsonObject.put("restaurantLatitude", 0);
restaurantJsonObject.put("restaurantLongitude", 0);
}
restaurantArray.put(restaurantJsonObject);
}
for(ProductInCart product : orderService.getOrderByDeliverymanUsername(s).getProductsInCart()){
JSONObject productJsonObject = new JSONObject();
productJsonObject.put("productName",product.getProduct().getProductName());
productJsonObject.put("productPrice",product.getProduct().getProductPrice());
productArray.put(productJsonObject);
}
orderJsonObject.put("products", productArray);
orderJsonObject.put("restaurants", restaurantArray);
return orderJsonObject.toString();
}
再次感谢大家。