[英]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.