2016-11-25 90 views
-1

我想使用Retrofit和Gson來解析JSON,但我需要將一個JSONfield 的值映射到bean類中的多個JAVA字段。如何使用GSON將單個JSON字段映射到多個JAVA字段?

下面是一個例子代碼:

class A{ 

@SerializedName("name"); 
private String name; 

@SerializedName("name"); 
private String fullName; 

} 

這是我看到的錯誤:A類聲明瞭一個名爲名稱的多個JSON領域。有沒有辦法做到這一點?

更新:請避免建議從bean中刪除一個字段或對getter和setter進行更改。該項目非常龐大,後來在其他許多案例中,該領域正在使用,所以我不想混淆這個結構。這個問題非常清楚並且重要。

+0

您可以提供JSON響應例如 –

+0

您可以自定義GSON解串器實現這一點:http://www.javacreed.com/gson-deserialiser-example/ 但你的問題聽起來不可思議。正如我猜想有其他的方式來做你所需要的,而不是映射一個json提交給多個java領域。 也許是這樣的: ' @SerializedName(「name」) private String name; public String getName(){ return name; } 公共字符串getFullName(){ 回報名 } ' – krossovochkin

+0

或者,如果你想單獨制定者,那麼你可以有這樣的: ' 公共字符串getFullName(){ 回報TextUtils.isEmpty(全名)?名稱:fullName; } ' – krossovochkin

回答

-1

無需在setter gatter中聲明全名使用名稱值與全名的JSON。

class A{ 

     @SerializedName("name"); 
     private String name; 

     private String fullName; 

     public String getName() { 
      return name; 
     } 

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

     public String getFullName() { 
      return name; 
     } 

     public void setFullName(String fullName) { 
      this.name = fullName; 
     } 
    } 
+0

還有一些一天一些可憐的程序員會嘗試猜出爲什麼地獄名字在他剛剛設置完整名稱時發生了變化... setFullName應該只設置fullName ... – Selvin

+0

@Selvin我剛剛向他展示了他如何使用相同插入來實現兩個變量。你不應該評判它。爲什麼你對這個答案投下了贊成票?有沒有漏洞,錯誤或程序錯誤? –

+1

*你不應該評判它*爲什麼? ...二傳手應該是二傳手......如果在咖啡機上將按鈕與「咖啡加牛奶」,但當你按下它的機器會服務器熱機油? ... **這也不是對問題**的回答,它是:*如何使用GSON將單個JSON字段映射到多個JAVA字段? – Selvin

相關問題