我在使用SpringMVC框架。 我有像这样的返回String对象的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();
}
再次感谢大家。
答案 0 :(得分:0)
执行此操作时:
for (Restaurant restaurant : restaurantList)
它生成一个迭代器并通过它循环。在传递引用时,它将当前值存储在数组中,即迭代器中的最后一个值。