Créer de la Chaîne Json manuellement
Je suis en train de créer une structure Json manuellement en Java. En fin de compte, j'ai besoin d'une représentation de chaîne de mon objet Json. Depuis que mon projet a déjà une dépendance à GSON, je voulais l'utiliser. Mais après plusieurs heures de l'essayer et de googler, je pense, j'ai totalement méconnaître quelque chose.
Pour le moment, j'ai le texte suivant (non-travail) code:
JsonObject user_auth = new JsonObject();
user_auth.addProperty("user_name", username);
user_auth.addProperty("password", password);
JsonObject rest_data = new JsonObject();
Gson gson = new Gson();
rest_data.addProperty("user_auth", gson.toJson(user_auth));
rest_data.addProperty("application", APPLICATION_NAME);
String payload = gson.toJson(rest_data);
Le problème que je me pose, c'est que le "user_auth" élément est échappé des guillemets (\" au lieu de " quand il est ajouté à l'élément extérieur. Comment puis-je éviter cela?
J'ai aussi essayé d'utiliser
rest_data.addProperty("user_auth", user_auth.toString());
mais cela n'a pétantes le même.
Ce qui concerne,
- Vous êtes doublement de codage de votre JSON. Juste ajouter user_auth directement à la enfermant JsonObject, ne pas JSONify il.
- (Avant de faire l'appel de la méthode toJson l'ensemble de votre structure de l'objet devrait
toString
à l'air presque exactement comme prévu résultat JSON.) - (La conversion de JSON et à partir de Cartes/Listes est parfaitement naturelle et simple. Des trucs comme Jackson rend les choses plus compliquées, pas moins.)
Vous devez vous connecter pour publier un commentaire.
Écrit le JSON manuellement n'est pas une bonne solution.
Il semble que vous codez user_auth deux fois.
Essayez plutôt ceci:
Utiliser le addProperty() pour le user_auth et puis pour le rest_data vous avez besoin de la charge utile.
Une autre façon est de convertir directement de POJO en JSON.
1. Créer des POJO objet
c'est à dire de la classe d'utilisateur:
2. Convertir des POJO à chaîne JSON
par exemple:
C'est tout 🙂
Je pense que c'est plus pratique que de bâtir structure json manuellement.
Si vous n'avez pas l'habitude d'ajouter des jar ensuite, essayez cette
retour "{UPLOAD:"+upload+",UPLOADSTATUS:"+perUpload+",TRANSCODE:"+transcode+",TRANSCODESTATUS:"+transcodestatus+"}";