2016-01-26 24 views
1

我現在有這樣的在JAX-RS,我怎麼能呈現空值作爲JSON輸出空字符串

@XmlNullPolicy(emptyNodeRepresentsNull = true, nullRepresentationForXml = XmlMarshalNullRepresentation.EMPTY_NODE) 
@XmlRootElement 
@Entity 
public class Entity implements Serializable { 
    @id 
    @Column 
    private Long id; 
    @Column 
    private String field2; 
    @Column 
    private BigDecimal field3; 
    @Column 
    private BigDecimal field4; 

JPA實體當我在一個JAX-RS web服務我返回實體已經得到了:

{ "id" : 12345 , "field2" : "Hello world" , "field3" : null, "field4" : null } 

我想有一個像

{ "id" : 12345 , "field2" : "Hello world" , "field3" : "", "field4" : "" } 

什麼是實現這一目標的最佳成語的輸出?

我使用的是weblogic 12c,而我的JAXB實現是eclipselink-moxy。

+1

您可以實現客戶序列化器,您可以將空值設置爲「」;公共類YourClassSerializer擴展JsonSerializer {} –

回答

1

我個人認爲這不是一個好習慣。使用空的String時,您正在丟失信息。 null意味着它沒有設置,而空的String對象表示它被設置爲空值。我認爲客戶端應該處理這個問題,但是如果你想丟失那種信息,你可以創建自定義序列化,就像上面提到的here

+0

我會考慮你的建議,但有時我們不能選擇格式。 – Leo

+0

如果真的需要,你可以像這樣創建一個適配器:http://docs.oracle.com/javaee/5/api/javax/xml/bind/annotation/adapters/XmlJavaTypeAdapter.html它也適用於'JSON' 。 – Mark