0

我正在研究 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();
}

再次感谢大家。

4

1 回答 1

0

当你这样做时:

for (Restaurant restaurant : restaurantList)

它生成一个迭代器并通过它循环。当您传递引用时,它将当前值存储在数组中,即迭代器中的最后一个值。

于 2013-08-30T07:06:02.263 回答