2016-12-21 1 views
-1

J'ai le JSON suivant pour créer POJO et que les POJO seront utilisés dans la bibliothèque Android Retrofit mais comment créer des classes POJO avec le nom de propriété JSON en double?Comment créer POJO pour le nom de propriété en double dans JSON pour la bibliothèque Android Retrofit

Mon échantillon JSON:

{ 
    "result": { 
     "detail": { 
      "name": "sample" 
     } 
    }, 
    "info": { 
     "detail": { 
      "user_information": "user" 
     } 
    } 
} 

Ici objet JSON detail est dupliquée dans info et result objets JSON, si je crée detail.java for result et detail_.java for info puis obtenir NullPointerException bibliothèque Rénovation (je l'espère, obtenir l'exception pour désaccord de nom de propriété avec des classes de pojo).

Répondre

0

Vous pouvez utiliser this site pour convertir json en classes pojo. Secondaire, vous pouvez déclarer la classe Detail à l'intérieur de la classe Result et la classe Info comme classe interne. Exemple: - View.OnClickListener et DialogInterface.OnClickListener. Dans cet exemple, le nom de l'interface OnClickListener est identique, nous devons donc écrire le nom de la classe externe pour la distinguer.

Pour votre cas, cela est JSON converti par site: -

-----------------------------------com.example.Detail.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Detail { 

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

public String getName() { 
return name; 
} 

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

} 
-----------------------------------com.example.Detail_.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Detail_ { 

@SerializedName("user_information") 
@Expose 
private String userInformation; 

public String getUserInformation() { 
return userInformation; 
} 

public void setUserInformation(String userInformation) { 
this.userInformation = userInformation; 
} 

} 
-----------------------------------com.example.Example.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Example { 

@SerializedName("result") 
@Expose 
private Result result; 
@SerializedName("info") 
@Expose 
private Info info; 

public Result getResult() { 
return result; 
} 

public void setResult(Result result) { 
this.result = result; 
} 

public Info getInfo() { 
return info; 
} 

public void setInfo(Info info) { 
this.info = info; 
} 

} 
-----------------------------------com.example.Info.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Info { 

@SerializedName("detail") 
@Expose 
private Detail_ detail; 

public Detail_ getDetail() { 
return detail; 
} 

public void setDetail(Detail_ detail) { 
this.detail = detail; 
} 

} 
-----------------------------------com.example.Result.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Result { 

@SerializedName("detail") 
@Expose 
private Detail detail; 

public Detail getDetail() { 
return detail; 
} 

public void setDetail(Detail detail) { 
this.detail = detail; 
} 

} 
+0

J'ai déjà essayé, si vous essayez ce POJO dans la conversion de JSON, vous obtiendrez une exception de pointeur nul. –

+0

fournir les détails du journal pour 'NullPointerException' –

2

Créer POJO comme cela en utilisant les classes internes.

public class JsonResponse{ 

    public Result result; 
    public Info info; 

    //Getters and Setters 

    public class Result{ 

     public NameDetails detail; 
     //Getters and Setters 

     public class NameDetails{ 

     public String name; 
      //Getters and Setters 
     } 
    } 

    public class Info{ 

     public UserInfoDetails detail; 
     //Getters and Setters 

    public class UserInfoDetails { 

     public String user_information; 
      //Getters and Setters 
     } 
    } 

}