2014-04-25 16 views
8

Tôi có một đối tượng JSON có thể chứa một vài giá trị null. Tôi sử dụng ObjectMapper từ com.fasterxml.jackson.databind để chuyển đổi đối tượng JSON của tôi thành String.Bật phương thức writeMalueAsString đối tượng Mapper để bao gồm các giá trị rỗng

private ObjectMapper mapper = new ObjectMapper(); 
String json = mapper.writeValueAsString(object); 

Nếu đối tượng của tôi chứa bất kỳ trường nào có giá trị rỗng, thì trường đó không được bao gồm trong chuỗi đến từ writeValueAsString. Tôi muốn ObjectMapper của tôi cung cấp cho tôi tất cả các trường trong Chuỗi ngay cả khi giá trị của chúng là null.

Ví dụ:

object = {"name": "John", "id": 10} 
json = {"name": "John", "id": 10} 

object = {"name": "John", "id": null} 
json = {"name": "John"} 
+0

Bạn có thể hiển thị một ví dụ? Jackson nên tuần tự hóa mọi thứ thành 'null'. –

+0

@SotiriosDelimanolis, ví dụ được thêm vào. – LINGS

+0

Tùy thuộc vào chú thích trên loại hoặc cách trình ánh xạ được định cấu hình, ví dụ: xem [this] (http://stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field -during-serialization-if-its-value-is-null). –

Trả lời

5

Jackson nên serialize null trường để null theo mặc định. Xem ví dụ sau

public class Example { 

    public static void main(String... args) throws Exception { 
     ObjectMapper mapper = new ObjectMapper(); 
     mapper.configure(SerializationFeature.INDENT_OUTPUT, true); 
     String json = mapper.writeValueAsString(new Test()); 
     System.out.println(json); 
    } 

    static class Test { 
     private String help = "something"; 
     private String nope = null; 

     public String getHelp() { 
      return help; 
     } 

     public void setHelp(String help) { 
      this.help = help; 
     } 

     public String getNope() { 
      return nope; 
     } 

     public void setNope(String nope) { 
      this.nope = nope; 
     } 
    } 
} 

in

{ 
    "help" : "something", 
    "nope" : null 
} 

Bạn không cần phải làm bất cứ điều gì đặc biệt.

0

Bao gồm.ALWAYS làm việc cho tôi.

objectMapper.setSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS); 

giá trị khác có thể cho Include được

  • Include.NON_DEFAULT
  • Include.NON_EMPTY
  • Include.NON_NULL
Các vấn đề liên quan