2012-09-06 108 views
3

我有一些JSON,以條目的序列是這樣的(我已經簡化它tofocus就有關問題這就是爲什麼它看起來有點多餘):GSON如何deserialise空對象屬性

{ 「名」: 「ISPC塞舌爾」, 「公司」:{ 「名」: 「ISPC 塞舌爾」, 「ID」:3427640}}

有時但公司屬性設置爲null:

{「name」:「Westin M iyako京都」,‘公司’:空}

我定義我的課像這樣(對不起,公衆訪問修飾符,將改變這些,當我得到的代碼工作這一點:)):

class Entry { 
    public String name=; 
    public Company company; 
    public String toString() { 
     return name + ";" + company; 
    } 
} 

class Company { 
    public String name; 
    public int id; 
    public String toString() { 
     return "Company: " + name; 
    } 
} 

在我的代碼,我嘗試使用GSON到deserialise包含變量中的JSON稱爲輸出:

while ((output = br.readLine()) != null) { 
    Gson gson = new Gson(); 
    Reply reply = gson.fromJson(output, Reply.class); 
    Entry[] entries = reply.entries; 
    for (int i=0; i < entries.length; i++) { 
     System.out.print(entries[i]+ "\n") ; 
    } 
} 

時,該公司元素填充爲在JSON第一個例子能正常工作:

ISPC塞舌耳;公司:ISPC塞舌耳

然而,如果元件沒有填充如在第二例子中,我得到以下輸出:

威斯汀都京都;空

我想是以下的輸出:

京都威斯汀都飯店;公司:空

回答

0

CompanytoString()表示由Company目標的控制,所以也沒有辦法,你可以得到你想要的,如果Company對象爲null表示。做到這一點的唯一方法是有類似下面你Entry類的toString()

class Entry { 
    ... 
    ... 

    public String toString() { 
     return name + "; " + (company != null ? company : "Company: null"); 
    } 
} 
+1

十分感謝所有漂亮的新的Java,你可以看到:) – Jules

+0

沒問題:)祝你好運! –