2012-06-19 55 views
5

Tôi chỉ muốn tạo ra các bản đồ Jackson tương đương dưới đây:Tạo cấu trúc JSON đơn giản sử dụng jackson

{\"isDone\": true} 

Tôi nghĩ rằng tôi cần phải tạo ra một lớp như thế này:

public class Status { 

    private boolean isDone; 

    public boolean isDone{ 
     return this.isDone; 
    } 

    public void setDone(boolean isDone){ 
     this.isDone = isDone; 
    } 
} 

Nhưng làm thế nào để instatiate nó và sau đó viết JSON vào một chuỗi?

Trả lời

6

Một vấn đề với ví dụ của bạn và Jackson là lựa chọn mặc định của tên thuộc tính JSON: Jackson sẽ thấy isDonesetDone và chọn done làm tên thuộc tính JSON. Bạn có thể ghi đè lựa chọn mặc định này bằng cách sử dụng JsonProperty chú thích:

public class Status 
{ 
    private boolean isDone; 

    @JsonProperty("isDone") 
    public boolean isDone() 
    { 
     return this.isDone; 
    } 

    @JsonProperty("isDone") 
    public void setDone(boolean isDone) 
    { 
     this.isDone = isDone; 
    } 
} 

Sau đó:

Status instance = new Status(); 
String jsonString = null; 

instance.setDone(true); 
ObjectMapper mapper = new ObjectMapper(); 

jsonString = mapper.writeValueAsString(instance); 

Bây giờ jsonString chứa { "isDone" : true }. Lưu ý rằng bạn cũng có thể viết chuỗi vào một số OutputStream bằng cách sử dụng ObjectMapper.writeValue(OutputStream, Object) hoặc đến Writer sử dụng ObjectMapper.writeValue(Writer, Object).

Trong trường hợp này, bạn thực sự chỉ cần chú thích JsonProperty trên một trong hai người truy cập của bạn, nhưng không phải cả hai. Chỉ cần chú thích isDone sẽ đưa bạn tên thuộc tính JSON mà bạn muốn.

Cách thay thế để sử dụng chú thích JsonProperty là đổi tên người truy cập của bạn setIsDone/getIsDone. Sau đó, các chú thích là không cần thiết.

Xem hướng dẫn Jackson nhanh chóng và bẩn: Jackson in 5 minutes. Sự hiểu biết về các thuộc tính cụ thể đến từ việc xem xét các tài liệu cho chú thích Jackson.

+0

cảm ơn, bạn có thể chỉ cho tôi theo hướng mà điều này được giải thích không? hoặc là nó nằm rải rác giữa các tài liệu? – user701254

2

Phải. Mã cần thiết:

ObjectMapper mapper = new ObjectMapper(); 
System.out.println(mapper.writeValueAsString(new Status())); 
Các vấn đề liên quan