0
我在SpringMVC框架上工作。 我有JSonController像這樣java轉換爲json對象
@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對象是重複返回字符串對象。 ex。
{
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();
}
再次感謝大家。
@Tarsem其中,請提供行號 –
謝謝,我在錯誤的地方創建json對象。我把它們移到他們的for循環中。 – user2731848
請檢查json對象的創建邏輯,你必須在錯誤的地方創建 – csk