Créer une chaîne JSON à l'aide de GSON
Je vais avoir une classe de la façon suivante,
public class Student {
public int id;
public String name;
public int age;
}
Maintenant, je veux créer de nouveaux Étudiants,
//while create new student
Student stu = new Student();
stu.age = 25;
stu.name = "Guna";
System.out.println(new Gson().toJson(stu));
Cela me donne la sortie suivante,
{"id":0,"name":"Guna","age":25} //Here I want string without id, So this is wrong
Je tiens donc ici à Cordes comme
{"name":"Guna","age":25}
Si je veux modifier un Étudiant âgé de
//While edit old student
Student stu2 = new Student();
stu2.id = 1002;
stu2.age = 25;
stu2.name = "Guna";
System.out.println(new Gson().toJson(stu2));
Maintenant la sortie est
{"id":1002,"name":"Guna","age":25} //Here I want the String with Id, So this is correct
Comment puis-je faire une Chaîne JSON avec un champ [À un certain point], sans un champ [à un certain point].
Toute aide sera très appréciable.
Grâce.
source d'informationauteur Gunaseelan
Vous devez vous connecter pour publier un commentaire.
Mieux est d'utiliser @exposer annotation comme
Et utiliser la méthode ci-dessous pour obtenir de chaîne Json à partir de votre objet
Il ignorera l'id de la colonne si elle est définie à 0, il sera de retour json chaîne avec l'id de champ.
Vous pouvez explorer le json arbre avec gson.
Essayer quelque chose comme cela :
Vous pouvez ajouter quelques propriétés :
Vous pouvez manipuler avec JsonObject
Vous devez introduire champ supplémentaire à
Student
classe avisGSON
surid
la sérialisation de la politique.Ensuite, vous devez implémenter des processus qui permettront de mettre en œuvre
TypeAdapter
. Dans votreTypeAdapter
mise en œuvre en fonction de l'id de la sérialisation politique de sérialiser ou pas. Ensuite, vous devez enregistrer votreTypeAdapter
dans GSON usine:Espère que cette aide.
Vous avez deux options.
Utilisation de Java transitoire mot clé qui est pour indiquer qu'un champ ne doit pas être sérialisé. Gson exclura automatiquement. Cela peut ne pas fonctionner pour vous comme vous le voulez conditionnelle.
Utiliser @Exposer annotation pour les champs que vous voulez et de les initialiser votre Gson constructeur comme suit:
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
Donc, vous devez indiquer le nom et l'âge des champs à l'aide de @Exposer et vous avez besoin d'avoir deux différents Gson cas pour celui par défaut qui inclut tous les champs et l'un au-dessus de qui exclut les champs sans
@Expose
annotation.