2012-10-04 38 views
0

我在網上搜索了關於我的問題..但我沒有找到一個好的解決方案。序列化字段的屬性而不是整個字段

我需要得到JSON在最後表明:

我有2班

class Order { 
    Long id; 

    Client client; 
} 

class Client { 
    Long id; 
} 

當我序列訂購我得到:

[{"id":1,"client":{"id":1}] 

但我想而不是獲得:

[{"id":1,"client":1}] 

我怎樣才能達到這個目標?

謝謝你的任何解決方案! Marco

回答

1

-當一個類實現Serializable,然後對象或其子類製成爲Serialized的對象。現在其對象的FieldsObject本身正被序列化 -

-entire object graph需要被序列化,若不是序列化失敗。

-所以Client作爲一個Object Reference VariableOrder類將得到序列化,所以做它FieldID

-,如果你願意,你可以防止Field使用transient關鍵字正在連載您不能序列字段,而不是整場屬性,但

+1

我幾乎不能讀你寫什麼。說真的,你不應該過度使用'code'和** bold **單詞。 – maba

+0

這也是我的JPA領域類。我不能讓它瞬變。一種解決方案是在現場使用@JSonIgnore並使用getClientId()等瞬態獲取器。 – gipinani

+0

@maba對不起..將盡力處理它.. –

0

你也可以嘗試genson庫http://code.google.com/p/genson/。 它擁有傑克遜的大部分功能以及傑克遜不提供的其他一些不錯的功能。

爲了解決genson您的問題和一些代碼,你可以這樣做的:

public class Order { 
    Long id; 
    @JsonIgnore Client client; 
    @JsonProperty("client") public Long getClientId() { 
     return client.id; 
    } 
} 

public static class Client { 
    Long id; 
} 

System.out.println(new Genson().serialize(order)); 

如果你喜歡,你還可以編寫自定義序列與genson看here。但在你的情況下,這是沒有必要的。

1

使用@JsonValue註釋:

class Client { 
    @JsonValue Long id; 
} 
相關問題