2011-08-25 13 views
8

Fondamentalmente ho:Come posso trasformare un JSONArray in un oggetto JSONObject?

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 

E ora vorrei trasformare questa JSONArray in un JSONObject con le stesse informazioni in esso. In modo che possa passare attorno all'oggetto e poi quando voglio posso estrarre tutte le informazioni dall'oggetto. Qualsiasi aiuto sarebbe apprezzato, grazie.

+0

Beh ho provato ad utilizzare JSONArray.toJSONObject (arg) ma im nuovo a JSON non riuscivo a capire cosa l'API ha voluto mettere dentro per l'arg. http://json-lib.sourceforge.net/apidocs/net/sf/json/JSONArray.html#toJSONObject(net.sf.json.JSONArray) – Grammin

risposta

17

In genere, un oggetto JSON conterrà i valori (inclusi gli array) come campi con nome all'interno. Quindi, qualcosa del tipo:

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

Quale in JSON sarà {"nomeArray": [...]}.

+1

Sì, è quello che dovevo fare invece di aggiungere i miei valori a un array li ho appena aggiunti a un oggetto e ho dato a ciascuno un identificativo del nome. Grazie. – Grammin

1

Non è possibile originariamente ottenere i dati come JSONObject?

Forse analizzare la stringa sia come JSONObject sia come JSONArray in primo luogo? Da dove proviene la stringa JSON?

Non sono sicuro che sia possibile convertire un JsonArray in un JsonObject.

presumo che si sta utilizzando il seguente da json.org

  • JSONObject.java
    Un JSONObject è una collezione non ordinata di coppie nome/valore. La sua forma esterna è una stringa avvolta in parentesi graffe con i due punti tra i nomi e i valori e le virgole tra i valori e i nomi. La forma interna è un oggetto che ha metodi get() e opt() per accedere ai valori per nome, e metodi put() per aggiungere o sostituire valori per nome. I valori possono essere uno qualsiasi di questi tipi: Booleano, JSONArray, JSONObject, Number e String o l'oggetto JSONObject.NULL.

  • JSONArray.java
    Un JSONArray è una sequenza di valori ordinata. La sua forma esterna è una stringa avvolta in parentesi quadre con virgole tra i valori. La forma interna è un oggetto che ha metodi get() e opt() per accedere ai valori tramite indice e metodi put() per aggiungere o sostituire valori. I valori possono essere uno qualsiasi di questi tipi: Booleano, JSONArray, JSONObject, Number e String o l'oggetto JSONObject.NULL.

2

Codice:

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(); 
} 
1

Ho JSONObject come questo: {"status":[{"Response":"success"}]}.

Se voglio convertire il valore JSONObject, che è un JSONArray in JSONObject automaticamente senza utilizzare alcun valore statico, ecco il codice per questo.

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

Conversione del JSONArray a JSON Oggetto:

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())); 


} 
} 
Problemi correlati