2016-11-25 6 views
-1

JSONをRetrofitとGsonで解析しようとしていますが、JSONフィールド の値をBeanクラス内の複数のJAVAフィールドにマッピングする必要があります。ここでGSONを使用して単一のJSONフィールドを複数のJAVAフィールドにマッピングする方法は?

はサンプルコードです:

class A{ 

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

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

} 

は、これは私が見ているエラーです:クラスAは、nameという名前の複数のJSONフィールドを宣言します。これを行う方法はありますか?

更新:Beanから1つのフィールドを削除するか、ゲッターとセッターに変更を加えないようにしてください。プロジェクトは巨大で、後で他の多くの場面で使用されているので、私はその構造を混乱させたくありません。質問はかなり明確で、その点がポイントです。

+0

あなたはあなたがカスタムgsonデシリアライザでこれを達成することができ –

+0

あなたのJSONレスポンスの例を提供することができます。http://www.javacreed.com/gson-deserialiser-example/ しかし、あなたの質問は奇妙に聞こえます。私が推測するように、複数のJavaフィールドに1つのjsonファイルをマッピングする代わりに、必要な処理を行う別の方法があります。 多分これは次のようなものです: ' @SerializedName(" name ") プライベートString name; public String getName(){ 戻り値; } パブリック文字列getFullName(){ 復帰名 } ' – krossovochkin

+0

それとも、別のセッターをしたい場合は、あなたのようなもの持つことができます。 ' パブリック文字列getFullName(){ リターンTextUtils.isEmpty(のfullNameを)?名前: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

私がちょうどfullNameを設定したときに地獄の名前が変わった理由を推測しようとします。setFullNameはfullNameだけを設定する必要があります... – Selvin

+0

@Selvin私はちょうど同じ挿入で両方の変数を達成する方法を彼に示しました。あなたはそれを判断すべきではありません。そして、なぜあなたはこの答えにdownvoteを与えたのですか?抜け穴、エラーまたはプログラム上の不具合はありますか? –

+1

*あなたはそれを判断すべきではありません。*なぜですか? ...セッターはセッターでなければなりません...もしコーヒーマシンで「ミルクコーヒー」のボタンがあればどうしますか?それを押すと、エンジンオイルはサーバーエンジンオイルになりますか? ... **これは質問への回答ではありません**:GSONを使って単一のJSONフィールドを複数のJAVAフィールドにマッピングする方法* – Selvin

関連する問題