2012-03-29 15 views
18

Voglio programmare un oggetto JSON nidificato per il mio dispositivo Android, ma come? Ho solo esperienza di base con JSON, quindi sarei grato se qualcuno mi potrebbe aiutare con il seguente codice:Come creare un oggetto Json annidato in Java?

{ 
"command": "login", 
"uid": "123123123", 
"params": 
    { 
    "username": "sup", 
    "password": "bros" 
    } 
} 

Edit:

Il seguente codice risolve il problema:

loginInformation = new ArrayList<NameValuePair>(); 

JSONObject parentData = new JSONObject(); 
JSONObject childData = new JSONObject(); 

try { 

    parentData.put("command", "login"); 
    parentData.put("uid", UID.getDeviceId()); 

    childData.put("username", username.getText().toString()); 
    childData.put("password", password.getText().toString()); 
    parentData.put("params", childData); 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 

loginInformation.add(new BasicNameValuePair("content", parentData.toString())); 
+1

Non si tenta di comunicare con il servizio utilizzando JSON? Hai davvero bisogno di inviare una struttura così difficile? –

+7

Mi stai prendendo in giro? COSA è così difficile con l'invio di un oggetto JSON annidato !? – Xarialon

+1

proprio quello di cui avevo bisogno !! grazie @Xarialon –

risposta

5

Devi creare un JSON e aggiungere questo JSON come parametro nel tuo POST. Per fare che probabilmente si dovrebbe:

post.add(new BasicNameValuePair("data",json.toString()); 

Si potrebbe usare org.json.JSONObject, è incluso nel Android SDK.

+1

Grazie, intendevo nidificato anziché multidimensionale. :) – Xarialon

+0

@Ovidiu Latcu Si prega di controllare la mia domanda http://stackoverflow.com/questions/15171454/sending-complex-json-object – bCliks

+0

@OvidiuLatcu puoi controllare la mia domanda [http://stackoverflow.com/questions/42024158/how-to-access-github-graphql-api-using-java] –

1

BasicNameValuePair è ciò che si utilizza per aggiungere i parametri POST. è un po 'oscuro quello che stai chiedendo. stai chiedendo come, dato quel JSON, per inviare i valori param come parametri post?

è necessario analizzare prima il JSON, quindi estrarre i parametri, quindi aggiungerli al post modulo, in questo modo,

JSONObject jo = new JSONObject(jsonString); 
JSONObject joParams = jo.getJSONObject("params"); 
String username = joParams.getString("username"); 

post.add(new BasicNameValuePair("username",username); 

voi, naturalmente, vogliono fare il controllo sulla JSON per garantire la esiste un oggetto params e per garantire che il parametro username venga chiuso.

0

Se si desidera semplicemente inviare un blocco di JSON al server, non utilizzare coppie di valori chiave, ma solo inserire i dati come StringEntity.

HttpPost request = new HttpPost(api_call); 

    request.setHeader("Content-Type", "text/javascript"); 
    request.setEntity(new StringEntity(jsonString); 

    httpClient.execute(request); 
1

Creare una classe modello per Json, inizializzarla con i dati. Quindi usa Google Gson per convertirlo in Json anche da Json a Back to Object. e anche qui ci sono due link che rendono la vita più facile per l'utilizzo di Json. Editor JSON in linea. È possibile verificare che JSON generato sia nel formato corretto o meno. http://www.jsoneditoronline.org/ e JSON per POJO generato (modello Classe Generator) http://www.jsonschema2pojo.org/

+0

Grazie Malik! Questa era una domanda molto vecchia. Non lo uso quando ho appena iniziato ad apprendere la programmazione Android. :) – Xarialon