web-dev-qa-db-fra.com

Tableau Gson de cordes à JsonArray

J'utilise Gson et j'essaie d'ajouter un tas de valeurs de chaîne dans un JsonArray comme ceci:

JsonArray jArray = new JsonArray();
jArray.add("value1");

Le problème est que la méthode add ne prend qu'une JsonElement.

J'ai essayé de convertir une chaîne en JsonElement mais cela n'a pas fonctionné.

Comment puis-je le faire en utilisant Gson?

25
RedEagle

Vous pouvez créer une primitive qui contiendra la valeur String et l'ajouter au tableau:

JsonArray jArray = new JsonArray();
JsonPrimitive element = new JsonPrimitive("value1");
jArray.add(element);
65
alexey28

On dirait que vous devriez faire un new JsonPrimitive("value1") et ajouter que . Voir The javadoc

3
slipset

Pour les versions plus récentes de la bibliothèque Gson, nous pouvons maintenant ajouter Strings également. Il a également étendu la prise en charge de l'ajout de Boolean, Character, Number etc. (voir plus ici )

En utilisant cela fonctionne pour moi maintenant:

JsonArray msisdnsArray = new JsonArray();
for (String msisdn : msisdns) {
    msisdnsArray.add(msisdn);
}
2
Nilu

J'espérais quelque chose comme ça moi-même:

JsonObject jo = new JsonObject();
jo.addProperty("strings", new String[] { "value1", "value2" });

Mais malheureusement, GSON ne prend pas en charge cette application, j'ai donc créé cette aide:

public static void Add(JsonObject jo, String property, String[] values) {
    JsonArray array = new JsonArray();
    for (String value : values) {
        array.add(new JsonPrimitive(value));
    }
    jo.add(property, array);
}

Et puis utilisez-le comme ceci:

JsonObject jo = new JsonObject();
Add(jo, "strings", new String[] { "value1", "value2" });

Voila!

0
Neil C. Obremski