2013-09-24 72 views
5

Tôi cần phải chuyển bản đồ trở lại ứng dụng web.Giải pháp thay thế JSONObject trong mùa xuân và Jackson

tôi đang sử dụng để đóng gói bản đồ trong một JSONObject

http://json.org/java/

Nhưng kể từ khi tôi đang sử dụng mùa xuân và Jackson Haus.

có cách nào dễ dàng hơn để duy trì pojo không? Tôi có thể chỉ chú thích MAP?

+1

Vì vậy, trong dự án của bạn, bạn có sẵn jackson ... sau đó nếu bạn trả lại bản đồ từ bộ điều khiển bằng chú thích @ResponseBody thì nó sẽ tự động được chuyển đổi thành đối tượng json bằng trình biến đổi mùa xuân –

+0

Tôi đang khôi phục bản đồ trong POJO sử dụng model.addAttribute ("pojo", pojo) – user4127

Trả lời

2

Nếu bạn cần phải thao tác các đầu ra, ví dụ, bạn không muốn cung cấp tất cả các lĩnh vực của đối tượng bạn có thể sử dụng JSonArray:

@RequestMapping(value = "/api/users", method = RequestMethod.GET) 
public 
@ResponseBody 
String listUsersJson(ModelMap model) throws JSONException { 
    JSONArray userArray = new JSONArray(); 
    for (User user : userRepository.findAll()) { 
     JSONObject userJSON = new JSONObject(); 
     userJSON.put("id", user.getId()); 
     userJSON.put("firstName", user.getFirstName()); 
     userJSON.put("lastName", user.getLastName()); 
     userJSON.put("email", user.getEmail()); 
     userArray.put(userJSON); 
    } 
    return userArray.toString(); 
} 

Sử dụng ví dụ từ here

Nếu không nếu bạn thêm jackson vào các phụ thuộc của bạn và đặt phương thức điều khiển được anotatted với @ResponseBody phản hồi sẽ tự động được ánh xạ tới JSON. Kiểm tra here để biết ví dụ đơn giản.

+0

tha thứ cho tôi nhưng nếu đó là yêu cầu gửi (không biết thuật ngữ thực tế) .. nó sẽ không chuyển tiếp tôi đến trang khác. – user4127

5

Jackson có com.fasterxml.jackson.core.JsonNode và các loại phụ cụ thể như ObjectNode. Những hình thức này được gọi là Tree Model, là một trong 3 cách để xử lý JSON với Jackson - một số thư viện khác (như org.json) chỉ cung cấp cách này.

Vì vậy, bạn chỉ có thể sử dụng JsonNode thay thế; có ít điểm trong việc sử dụng thư viện org.json; nó chậm và có API lỗi thời.

Hoặc bạn chỉ có thể sử dụng java.util.Map và trả lại điều đó. Jackson có thể xử lý các tiêu chuẩn List s, Map s và các loại JDK khác.

+0

Tôi đã sử dụng bản đồ nhưng đối tượng trả về không phải là một đối tượng JSON. – user4127