2012-03-29 51 views
18

Quiero programar un objeto JSON anidado para mi dispositivo Android, pero ¿cómo? Sólo tengo experiencia básica con JSON, por lo que agradecería si alguien me podría ayudar con el siguiente código:¿Cómo hacer un objeto Json anidado en Java?

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

Editar:

El siguiente código no resuelve el 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

¿Trata de comunicarse con el servicio utilizando JSON? ¿Realmente necesitas enviar una estructura tan difícil? –

+7

¿Estás bromeando? ¿QUÉ es tan difícil con el envío de un objeto JSON anidado? – Xarialon

+1

¡justo lo que necesitaba! gracias @Xarialon –

Respuesta

5

Debe crear un JSON y agregar ese JSON como parámetro en su POST. Para hacer eso debería probablemente:

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

Usted podría utilizar org.json.JSONObject, que está incluido en el Android SDK.

+1

Gracias, quise decir anidado en lugar de multidimensional. :) – Xarialon

+0

@Ovidiu Latcu Por favor, consulte mi pregunta http://stackoverflow.com/questions/15171454/sending-complex-json-object – bCliks

+0

@OvidiuLatcu puede por favor, consulte mi pregunta [http://stackoverflow.com/questions/42024158/how-to-access-github-graphql-api-using-java] –

1

BasicNameValuePair es lo que usa para agregar parámetros POST. no está un poco claro lo que estás preguntando. ¿Estás preguntando cómo, dado ese JSON, enviar los valores de param como parámetros de publicación?

que necesita para analizar primero la JSON, a continuación, tire de los parámetros, y luego añadirlos a la forma posterior, de esta manera,

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

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

que, por supuesto quieren hacer la comprobación en el JSON para asegurar la el objeto params existe, y para garantizar que el parámetro de nombre de usuario salga.

0

Si solo desea enviar un bloque de JSON al servidor, no debe usar pares de valores clave sino solo publicar los datos como StringEntity.

HttpPost request = new HttpPost(api_call); 

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

    httpClient.execute(request); 
1

Cree una clase de modelo para Json, inicialícela con sus datos. Luego use Google Gson para convertirlo a Json también de Json a Back to the Object. y también aquí hay dos enlaces que hacen que tu vida sea más fácil para usar Json. Online Json Editor. Puede verificar que json generado esté en el formato correcto o no. http://www.jsoneditoronline.org/ y JSON a PoJo generado (Generador Clase Modelo) http://www.jsonschema2pojo.org/

+0

Gracias Malik! Esta era una pregunta muy antigua. Lo uso cuando comencé a aprender programación de Android. :) – Xarialon