Modifier json avec GSON sans utiliser de POJO
Je veux modifier un contenu json sans la convertir en un POJO. Je suis à l'aide de GSON Bibliothèque.
Suivantes sont les cas d'utilisation:
String jsonString = "[{\"key1\":\"Hello\",\"key2\":\"World\"},{\"key1\":\"Nice\",\"key2\":\"Town\"}]";
JsonElement jsonElement = gson.fromJson(jsonString, JsonElement.class);
Est-il de toute façon où je peux mettre la valeur de key1 à une certaine valeur (par exemple "Test") dans chaque tableau, sans conversion de choses dans POJO
source d'informationauteur linuxeasy
Vous devez vous connecter pour publier un commentaire.
Voici le plus court, je suis venu avec.
Une fois que vous avez la JsonObject, gson a de nombreuses méthodes pour les manipuler.
Une approche pourrait être de simplement convertir le format JSON pour un
java.util.Map
de modifier la Carte, et à partir de là (ce qui peut signifier la sérialisation de la Carte vers le JSON).Cette approche répond à ma préférence pour travailler avec le droit de l'API pour le droit du travail, en minimisant l'utilisation d'outils comme Gson juste gérer la sérialisation/désérialisation (qui est ce que je comprends il a été conçu). C'est, à ne pas utiliser le Gson API comme un remplacement de la structure de données.
Vous pouvez toujours obtenir un type différent de JsonElement, ou de l'utilisation JsonElement.getAsJsonObject cast vers un Objet (si possible).
J'ai eu tort; il ne semble pas JsonArray adaptateur; vous aurez à obtenir un JsonElement et utiliser l'outil de lancer.
GSON a séparé deux Api (qui peuvent être combinés): l'un est utilisé pour la sérialisation et la désérialisation, et l'autre pour le streaming. Si vous souhaitez traiter des flux JSON sans surcharge de la mémoire ou en utilisant des structures dynamiques plutôt que statiques Pojo), vous pouvez faire quelque chose comme:
La boucle est constitué d'une seule instruction switch qui doit avoir un cas de tous les événements possibles (10). Même l'exemple le plus simple doit avoir tout d'eux, de sorte que le code ci-dessous semble assez bavard. Mais il est très facile d'étendre et d'autres extensions ne sera pas faire beaucoup plus de temps.
Un exemple qui ajoute "test": 1 paire de chaque objet ressemble à quelque chose comme:
La jsonString est une plaine, simple Java String; de sorte que vous pouvez modifier comme vous le souhaitez en utilisant les normes les fonctions de Chaîne de Java et de le remplacer une sous-chaîne
key1
avecTest1
:Bien sûr, String en Java sont immuables, afin de le convertir d'abord à un StringBuilder va peut-être vous donner une meilleure performance en terme de l'utilisation de la mémoire.