web-dev-qa-db-fra.com

Comment puis-je transformer un tableau JSON en tableau JSONObject?

En gros j'ai:

JSONArray j = new JSONArray();
j.add(new JSONObject()); //JSONObject has a bunch of data in it
j.add(new JSONArray());  //JSONArray has a bunch of data in it

Et maintenant, j'aimerais transformer cette JSONArray en une JSONObject contenant les mêmes informations. Pour que je puisse faire circuler l'objet et quand je veux, je peux extraire toutes les informations de l'objet. Toute aide serait appréciée Merci.

8
Grammin

En règle générale, un objet Json contient vos valeurs (y compris les tableaux) sous forme de champs nommés. Donc, quelque chose comme:

JSONObject jo = new JSONObject();
JSONArray ja = new JSONArray();
// populate the array
jo.put("arrayName",ja);

Lequel dans JSON sera {"arrayName": [...]}.

17
david van brink

Code: 

List<String> list = new ArrayList<String>();

list.add("a");

JSONArray array = new JSONArray();

for (int i = 0; i < list.size(); i++) {
    array.put(list.get(i));
}
JSONObject obj = new JSONObject();

try {
    obj.put("result", array);
} catch (JSONException e) {
    e.printStackTrace();
}
2
Ravi

Ne pouvez-vous pas obtenir les données à l'origine en tant que JSONObject?

Peut-être analyser la chaîne en tant que JSONObject et JSONArray en premier lieu? D'où provient la chaîne JSON?

Je ne suis pas sûr qu'il soit possible de convertir un JsonArray en un JsonObject.

Je suppose que vous utilisez les éléments suivants de json.org

  • JSONObject.Java
    Un objet JSON est une collection non ordonnée de paires nom/valeur. Sa forme externe est une chaîne entourée d'accolades avec des deux points entre les noms et les valeurs et des virgules entre les valeurs et les noms. La forme interne est un objet ayant des méthodes get () et opt ​​() pour accéder aux valeurs par nom, et des méthodes put () pour ajouter ou remplacer des valeurs par nom. Les valeurs peuvent être l'un des types suivants: Boolean, JSONArray, JSONObject, Number et String ou encore l'objet JSONObject.NULL.

  • JSONArray.Java
    Un tableau JSON est une séquence ordonnée de valeurs. Sa forme externe est une chaîne entourée de crochets avec des virgules entre les valeurs. La forme interne est un objet ayant les méthodes get () et opt ​​() pour accéder aux valeurs par index et les méthodes put () pour ajouter ou remplacer des valeurs. Les valeurs peuvent être l'un des types suivants: Boolean, JSONArray, JSONObject, Number et String ou encore l'objet JSONObject.NULL.

1
Pez Cuckow

J'ai JSONObject comme ceci: {"status":[{"Response":"success"}]}.

Si je veux convertir la valeur JSONObject, qui est un JSONArray en JSONObject automatiquement sans utiliser de valeur statique, voici le code correspondant.

JSONArray array=new JSONArray();
JSONObject obj2=new JSONObject();
obj2.put("Response", "success");
array.put(obj2);
JSONObject obj=new JSONObject();
obj.put("status",array);

Conversion du JSONArray en objet JSON:

Iterator<String> it=obj.keys();
        while(it.hasNext()){
String keys=it.next();
JSONObject innerJson=new JSONObject(obj.toString());
JSONArray innerArray=innerJson.getJSONArray(keys);
for(int i=0;i<innerArray.length();i++){
JSONObject innInnerObj=innerArray.getJSONObject(i);
Iterator<String> InnerIterator=innInnerObj.keys();
while(InnerIterator.hasNext()){
System.out.println("InnInnerObject value is :"+innInnerObj.get(InnerIterator.next()));


 }
}
1
zameer