web-dev-qa-db-fra.com

Supprimer la citation de la sortie JSONArray

Lors de l'appel réussi, je reçois le tableau JSON avec la clé "objets" et à nouveau le testValue avec la clé "nom". La sortie est comme:

"Abcd"
"Wxyz"

Mon code est le suivant:

public void onSuccess(JSONValue val) {
    JSONObject obj = val.isObject();
    JSONArray test = JSONUtil.getJSONArray(test, "objects");
    for (int i = 0; i < test.size(); i++) {
        JSONObject childJSONObject = (JSONObject) test.get(i);
        JSONValue testValue = childJSONObject.get("name");
        System.out.println(testValue);
    }
}

Voulez-vous imprimer le nom comme suit: (sans double devis)

Abcd
Wxyz
7
Ask

1. .replaceAll ()

testValue.toString().replaceAll("\"", "");

Cette méthode remplace toutes les guillemets doubles présents dans votre nom, pas les premiers ni les derniers.

Exemple: "Abcd" devient Abcd mais si le nom est "Ab" cd ", il devrait correspondre à Ab" cd selon vos besoins, mais il devient Abcd. Cela veut dire que toute la double citation a été remplacée.

2. sous-chaîne ()

Si vous souhaitez utiliser l'approche par la méthode de la sous-chaîne, utilisez la syntaxe suivante pour supprimer les première et dernière guillemets doubles de votre chaîne:

testValue.toString().subString(1,testValue.toString().length()-1);

1 - indique le premier caractère de la chaîne

testValue.toString().length()-1: indique le dernier caractère de la chaîne.

Dans votre cas, la méthode .substring() est meilleure que la .replaceAll(), si .getString() ne fonctionne pas.

3. .ValueOf () OR .getString ()

Je ne sais pas Dans votre cas, pourquoi ça ne marche pas? (peut-être parce que la chaîne elle-même contenant les guillemets) sinon, le meilleur moyen est de convertir la valeur JSON en chaîne en tant que String.ValueOf(testValue); 

OU 

childJSONObject.getString("name");

Sinon, donnez la préférence comme: 3> 2> 1

13
Vaibhav Jain

Reconvertissez la valeur JSONValue en chaîne:

String.ValueOf(testValue);

Ou

childJSONObject.getString("name");

Après tout cela et toujours avec des guillemets - puis retomber sur RegExp.

testValue.toString().replaceAll("\"", "");
5
Bitmap

juste

s.replaceAll("\"", "");

supprime tous les "caractères de votre chaîne.

ou dans votre cas

testValue.toString().replaceAll("\"", "");
2
Stefan Beike

les guillemets dans les tableaux dépendent de la librairie JOSN utilisée:

org.codehaus.jettison.json.JSONArray ou org.json.JSONArray

1
user4605712

Ce fil est assez vieux, mais je suis tombé sur le même problème il y a une heure et j'ai trouvé la bonne solution. Vous devez vérifier le type de JsonValue et si c'est un JsonString, vous pouvez l'analyser dans JsonString et appeler sa méthode getString ().

if(val.getValueType().equals(JsonValue.ValueType.STRING)) {
  c.setValue(((JsonString) val).getString());
} else {
  c.setValue(val.toString());
}
1
user2070007

En cas d'utilisation de javax.json.JsonArray , Vous pouvez obtenir la chaîne d'un JsonValue de manière:

JsonArray array = jsonObject.getJsonArray("languages");
for (int i=0; i<array.size(); i++) {
     System.out.println(array.getJsonString(i).getString());
}
1
Thero

Vous pouvez obtenir la valeur en tant que chaîne elle-même, vous n'avez pas besoin de lancer ou de remplacer: 

JSONObject childJSONObject = (JSONObject) test.get(i);
String testValue = childJSONObject.getString("name");

Il retournera une chaîne sans guillemets.

Plus d'infos: JSONObject

1
Amin Abu-Taleb

En supposant que com.google.gwt.json.client.* soit présent (à partir des balises de question et de l'utilisation de JSONValue qui est pratiquement introuvable ailleurs), toString() est censé vous donner une représentation JSON de la valeur.

Ici, la valeur est une JSONString, vous devez donc utiliser:

testValue.isString().stringValue()
0
Thomas Broyer

La meilleure option consiste à utiliser la méthode .getString() de JSONObject ou la méthode .valueOf() de String. Vous pouvez également utiliser la fonction .replaceAll("\"",""), mais cela pose quelques problèmes lorsque la chaîne elle-même contient des " (guillemets) qui y sont incorporés. Donc, évitez d’utiliser la méthode replaceAll () pour résoudre les problèmes inattendus.

Mais quand même, si vous voulez coder vous-même ou si vous voulez savoir comment supprimer les guillemets sans utiliser getString() and .valueOf(), vous pouvez essayer comme ceci

testValue.toString().subString(1,testValue.toString().length())

il donnera la sous-chaîne en excluant les premier et dernier caractères de la chaîne. Mais, cela semble être une chose en désordre. 

0
Azeez