繁体   English   中英

java转换为json对象

[英]java convert to json object

我在SpringMVC框架上工作。 我有JSonController这样的返回String对象

@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();
}

再次感谢大家。

当您这样做时:

for (Restaurant restaurant : restaurantList)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM