Comment sérialiser l'aide de gson avec @SerializedName annotation?
C'est ma première approche de sérialisation à l'aide de Gson.
J'en attente de facebook de réponse à mon application android comme ceci:
Result: {
Response: responseCode: 200,
graphObject: GraphObject{graphObjectClass=GraphObject,
state={
"data":[{"pic_square":"https:\/\/fbcdn-profile-a.akamaihd.net\/xxx.jpg",
"uid":"1020272xxxx852765","name":"Mister X"}
},
error: null, isFromCache:false
}]}
J'ai créé une nouvelle Classe mais je ne sais pas comment remplir...
import java.io.Serializable;
import java.util.Arrays;
import com.google.gson.annotations.SerializedName;
public class FacebookResponse implements Serializable{
private static final long serialVersionUID = -104137709256566564L;
@SerializedName("data")
private FacebookResponse[] data;
@Override
public String toString() {
return "FacebookResponse [data=" + Arrays.toString(data) + "]";
}
}
Dans mon principal fragment:
Request request = new Request(session,
"/fql",
params,
HttpMethod.GET,
new Request.Callback(){
public void onCompleted(Response response) {
Log.i(TAG, "Result: " + response.toString());
final GsonBuilder builder = new GsonBuilder();
final Gson gson = builder.create();
FacebookResponse facebookResponse= gson.fromJson(response.toString(),FacebookResponse.class);
}
});
Request.executeBatchAsync(request);
Merci beaucoup pour votre aide
OriginalL'auteur alfo888_ibg | 2013-12-27
Vous devez vous connecter pour publier un commentaire.
La solution
FacebookResponses Classe
FacebookRisp Classe
La spécification d'un sérialisés nom est la meilleure pratique; il dissocie vos noms de champ à partir de votre modèle de réseau. Considérons un dev à venir le long et vous demandez-vous pourquoi pic_big n'est pas en camelcase. Il refactors dans un IDE pour picBig. Oups, maintenant, c'est nul tout le temps. Il ne va pas être immédiatement évident: pourquoi c'est le cas la plupart du temps.
c'est un bon point. Il est dommage que les devs ne suivez pas la bonne variable conventions de nommage et de pratiques exemplaires. Je pouvais tout voir moi-même qui cause le bug de la référence. Si je suis tombé sur le code avec les variables de membre nommé comme ceci (en Java), j'aurais refactoriser le code immédiatement. Merci pour cette!
OriginalL'auteur alfo888_ibg
définir les champs de la classe qui correspondent le json déposé les noms, ajouter l'annotation @serialaziedName("name_of_field") et gson devrait faire le reste du travail après que vous avez enregistré la classe
Chaîne pic_square, int uid, String nom, d'ajouter des annotations avec les mêmes noms (bien que im assez sûr que ce n'est pas vraiment nécessaire si les champs sont les mêmes que dans le json)
Je reçois ce erros : com.google.gson.flux de données.MalformedJsonException: Indéterminé objet à la ligne 1 de la colonne 26
OriginalL'auteur Maciej Boguta