2015-03-30 15 views
20

Làm cách nào để chuyển đổi Bản đồ sang JSON hợp lệ bằng Jackson?Chuyển đổi Bản đồ sang JSON bằng cách sử dụng Jackson

tôi đang làm nó bằng cách sử GSON của Google thông qua một phương pháp xuân Boot REST của bài viết ...

Dưới đây là các dịch vụ web RESTful:

import java.util.Map; 

import org.springframework.web.bind.annotation.RequestBody; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RestController; 

import com.fasterxml.jackson.core.JsonFactory; 
import com.fasterxml.jackson.core.JsonParser; 
import com.google.gson.Gson; 

@RestController 
@RequestMapping("/myservice") 
public class ValidationService {  

    @RequestMapping(value="/validate", method = RequestMethod.POST) 
    public void validate(@RequestBody Map<String, Object> payload) throws Exception { 
     Gson gson = new Gson(); 
     String json = gson.toJson(payload); 
     System.out.println(json); 
    } 
} 

Vì vậy, khi tôi gọi nó bằng cách sử này:

curl -H "Accept: application/json" -H "Content-type: application/json" \ 
-X POST -d '{"name":"value"}' http://localhost:8080/myservice/validate 

Nhận phần sau đây để stdout (điều này là chính xác những gì tôi muốn):

{"name":"value"} 

Có cách nào tốt hơn để thực hiện việc này bằng cách sử dụng Jackson thay vì Gson của Google và/hoặc tôi có hoàn toàn sai lầm không?

+0

thể trùng lặp của [Jackson Vs. Gson] (http://stackoverflow.com/questions/2378402/jackson-vs-gson) –

+3

Neeraj Jain, Cảm ơn đã bình luận nhưng: Jackson vs. Gson là về những mặt tích cực và tiêu cực của Jackson so với Gson. Bài đăng này là một câu hỏi cụ thể. –

Trả lời

48

Bạn có thể chuyển đổi Map-JSON sử dụng Jackson như sau:

Map<String,String> payload = new HashMap<>(); 
payload.put("key1","value1"); 
payload.put("key2","value2"); 

String json = new ObjectMapper().writeValueAsString(payload); 
System.out.println(json); 
+0

Đây là Bản đồ thành Chuỗi chứ không phải JSON. Sẽ có một bước khác để chuyển đổi chuỗi đầu ra thành loại JSON. –

+0

@NayanWadekar điều này thực sự hoạt động, tôi nghĩ rằng bạn đang nhầm lẫn hoặc có thể bạn muốn cung cấp một số thông tin chi tiết? –

+0

@BrunoBossola Xin lỗi, tôi đã suy nghĩ về đối tượng JSON thực tế, không thấy đầu ra cần thiết, để biểu diễn chuỗi JSON, điều này là chính xác. –

0

Nếu bạn đang sử dụng jackson, tốt hơn để chuyển đổi trực tiếp với ObjectNode.

//not including SerializationFeatures for brevity 
static final ObjectMapper mapper = new ObjectMapper(); 

//pass it your payload 
public static ObjectNode convObjToONode(Object o) { 
    StringWriter stringify = new StringWriter(); 
    ObjectNode objToONode = null; 

    try { 
     mapper.writeValue(stringify, o); 
     objToONode = (ObjectNode) mapper.readTree(stringify.toString()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    System.out.println(objToONode); 
    return objToONode; 
} 
1

Sử dụng jackson, bạn có thể làm điều đó như sau:

ObjectMapper mapper = new ObjectMapper(); 
    String clientFilterJson = ""; 
    try { 
     clientFilterJson = mapper.writeValueAsString(filterSaveModel); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
Các vấn đề liên quan