Android: crear JSON Array y JSON Object

¿Cómo puedo crear un JSON con este formato en Android: Ya que la API que voy a pasar analizará JsonArray entonces el objeto. ¿O estaría bien si sólo pasara un objeto json? Puesto que sólo tendré que insertar 1 transacción por llamada de servicio.

{ "student": [ { "id": 1, "name": "John Doe", "year": "1st", "curriculum": "Arts", "birthday": 3/3/1995 }, { "id": 2, "name": "Michael West", "year": "2nd", "curriculum": "Economic", "birthday": 4/4/1994 } ] } 

Lo que sé es sólo el JSONObject. Como éste.

 JSONObject obj = new JSONObject(); try { obj.put("id", "3"); obj.put("name", "NAME OF STUDENT"); obj.put("year", "3rd"); obj.put("curriculum", "Arts"); obj.put("birthday", "5/5/1993"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Algunas ideas. Gracias

7 Solutions collect form web for “Android: crear JSON Array y JSON Object”

Utilice el código siguiente:

 JSONObject student1 = new JSONObject(); try { student1.put("id", "3"); student1.put("name", "NAME OF STUDENT"); student1.put("year", "3rd"); student1.put("curriculum", "Arts"); student1.put("birthday", "5/5/1993"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } JSONObject student2 = new JSONObject(); try { student2.put("id", "2"); student2.put("name", "NAME OF STUDENT2"); student2.put("year", "4rd"); student2.put("curriculum", "scicence"); student2.put("birthday", "5/5/1993"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } JSONArray jsonArray = new JSONArray(); jsonArray.put(student1); jsonArray.put(student2); JSONObject studentsObj = new JSONObject(); studentsObj.put("Students", jsonArray); String jsonStr = studentsObj.toString(); System.out.println("jsonString: "+jsonStr); 
 public JSONObject makJsonObject(int id[], String name[], String year[], String curriculum[], String birthday[], int numberof_students) throws JSONException { JSONObject obj = null; JSONArray jsonArray = new JSONArray(); for (int i = 0; i < numberof_students; i++) { obj = new JSONObject(); try { obj.put("id", id[i]); obj.put("name", name[i]); obj.put("year", year[i]); obj.put("curriculum", curriculum[i]); obj.put("birthday", birthday[i]); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } jsonArray.put(obj); } JSONObject finalobject = new JSONObject(); finalobject.put("student", jsonArray); return finalobject; } 
  JSONObject obj = new JSONObject(); try { obj.put("id", "3"); obj.put("name", "NAME OF STUDENT"); obj.put("year", "3rd"); obj.put("curriculum", "Arts"); obj.put("birthday", "5/5/1993"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } JSONArray js=new JSONArray(obj.toString()); JSONObject obj2 = new JSONObject(); obj2.put("student", js.toString()); 

Puede crear un método aa y pasar paramters a él y obtener el json como una respuesta.

  private JSONObject jsonResult(String Name,int id, String curriculum) throws JSONException { JSONObject json = null; json = new JSONObject("{\"" + "Name" + "\":" + "\"" + Name+ "\"" + "," + "\"" + "Id" + "\":" + id + "," + "\"" + "Curriculum" + "\":" + "\"" + curriculum+ "\"" + "}"); return json; } 

Espero que esto ayude.

He estado luchando con esto hasta que descubrí la respuesta:

  1. Utilizar la biblioteca GSON:

     Gson gson = Gson(); String str_json = gson.tojson(jsonArray);` 
  2. Pase la matriz json. Esto se auto stringfied. Esta opción funcionó perfectamente para mí.

Aquí hay una versión más simple (pero no tan corta) que no requiere try-catch:

 Map<String, String> data = new HashMap<>(); data.put("user", "mark@facebook.com"); data.put("pass", "123"); JSONObject jsonData = new JSONObject(data); 

Si desea agregar un jsonObject a un campo, puede hacerlo de esta manera:

 data.put("socialMedia", (new JSONObject()).put("facebookId", "1174989895893400")); data.put("socialMedia", (new JSONObject()).put("googleId", "106585039098745627377")); 

Desafortunadamente necesita un try-catch debido al método put ().

Si quiere evitar volver a intentarlo (no es muy recomendable, pero está bien si puede garantizar una jonificación bien formada), puede hacerlo de esta manera:

 data.put("socialMedia", "{ 'facebookId': '1174989895893400' }"); 

Puede hacer lo mismo con JsonArrays y así sucesivamente.

Aclamaciones.

 JSONObject jsonResult = new JSONObject(); try { jsonResult.put("clave", "valor"); jsonResult.put("username", "iesous"); jsonResult.put("password", "1234"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.d("DEV","jsonResult->"+jsonResult); 
  • No puedo recuperar JSONArray desde el servidor IP, pero puedo desde el servidor normal?
  • Grupo de día en el Android?
  • Cómo convertir una cadena en unicode en android
  • Escribir archivo .json y leer ese archivo en Android
  • Tiempo de viaje entre dos ubicaciones en Google Map Android API V2
  • Obtención de encabezado de respuesta (Retrofit / OkHttp Client)
  • El envío de JSON como datos adicionales en una transmisión de Android a través de ADB se formatea incorrectamente
  • Alternativa del método Jsoup.parse ()
  • No se puede ver la respuesta JSON de php en android
  • Dispositivo de Android de acceso de host local en la computadora portátil
  • Deserialización de JsonArray y JsonObject de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.