2015-09-15 52 views
3

好日子所有,我想在將一個Pojo序列化爲json時刪除屬性名稱。我有以下類傑克遜註釋選項在序列化時刪除屬性名稱

public class Field { 

    private List<SubFieldItems> subFieldItems; 

    public List<SubFieldItems> getSubFieldItems() { 
     return subFieldItems; 
    } 

    public void setSubFieldItems(List<SubFieldItems> subFieldItems) { 
     this.subFieldItems = subFieldItems; 
    } 
    } 

和SubFieldItems類:

 public class SubFieldItems { 
    @JsonPropertyOrder 

     private String name; 
     private List<String> items; 


     public SubFieldItems(String name, List<String> items) { 
      this.name = name; 
      this.items = items; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public List<String> getItems() { 
      return items; 
     } 

     public void setItems(List<String> items) { 
      this.items = items; 
     } 

//tried doing this 
     /* @JsonValue 
     @Override 
     public String toString() { 
      return "{" + 
        " \"name\":" + "\"" + name + "\"" + 
        ",\" items\":" + items + 
        '}'; 
     }*/ 
    } 

當我序列化的JSON輸出是

{ 
    "field": { 
    "subFieldItems": [ 
     { 
     "name": "brands", 
     " items": [] 
     } 
    ] 
    } 
} 

,但我希望有subFieldItems值無財產這樣的名字:

{ 
     "field": { 
      [ 
      { 
      "name": "brands", 
      " items": [] 
      } 
     ] 
     } 
    } 

我可以使用什麼傑克遜註釋,我曾嘗試在toString方法中使用@JsonValue來強制類似於註釋中的內容,但我不斷得到奇怪的結果。請任何幫助表示讚賞。由於

+0

@FedericoPeraltaSchaffner也許我沒有字的問題很好,我想在Java對象轉換成JSON。我得到這些值,因爲我張貼之前,但我想要一個沒有「subFieldItems」在JSON輸出,只是它的值 – irobotxxx

回答

7

你想要的JSON是無效的,也許這就是你想要什麼:

{ 
    "field": [ 
    { 
     "name": "brands", 
     "items": [] 
    } 
    ] 
} 

(請注意,我"field":後取出支架,以及與其相配套的右大括號)。

在這種情況下,你可能會發現@JsonValue annotation有用:

@JsonValue:每個屬性標記來表示該POJO應該序列化是使用屬性的值來實現,往往一個java.lang.String (如註解toString()方法)。

試試這個:

public class Field { 

    private List<SubFieldItems> subFieldItems; 

    @JsonValue 
    public List<SubFieldItems> getSubFieldItems() { 
     return subFieldItems; 
    } 

    public void setSubFieldItems(List<SubFieldItems> subFieldItems) { 
     this.subFieldItems = subFieldItems; 
    } 
} 
+1

你是對的!..現在只是注意到了錯誤。謝謝您的幫助。 – irobotxxx

+0

http://stackoverflow.com/questions/41306886/remove-the-automatically-display-of-getter-in-pojo 此鏈接包含類似的問題。你可以檢查一樣嗎?我嘗試使用JSON值,但沒有運氣。 – Souvik