Convierta JSONArray a String Array

Quiero hacer una pregunta sobre la conversión de jsonArray a StringArray en Android. Aquí está mi código para obtener jsonArray del servidor.

try { DefaultHttpClient defaultClient = new DefaultHttpClient(); HttpGet httpGetRequest = new HttpGet("http://server/android/listdir.php"); HttpResponse httpResponse = defaultClient.execute(httpGetRequest); BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(),"UTF-8")); String json = reader.readLine(); //JSONObject jsonObject = new JSONObject(json); JSONArray jsonArray = new JSONArray(json); Log.d("", json); //Toast.makeText(getApplicationContext(), json, Toast.LENGTH_SHORT).show(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Y este es el JSON.

[{“nombre”: “IMG_20130403_140457.jpg”}, {“nombre”: “IMG_20130403_145006.jpg”}, {“nombre”: “IMG_20130403_145112.jpg”}, {“nombre”: “IMG_20130404_085559.jpg”}, { “nombre”: “IMG_20130404_113700.jpg”}, {“nombre”: “IMG_20130404_113713.jpg”}, {“nombre”: “IMG_20130404_135706.jpg”}, {“nombre”: “IMG_20130404_161501.jpg”}, {“nombre “:” IMG_20130405_082413.jpg “}, {” nombre “:” IMG_20130405_104212.jpg “}, {” nombre “:” IMG_20130405_160524.jpg “}, {” nombre “:” IMG_20130408_082456.jpg “}, {” nombre “: “test.jpg”}]

¿Cómo puedo convertir jsonArray que tengo en StringArray para poder obtener StringArray así:

array = {“IMG_20130403_140457.jpg”, “IMG_20130403_145006.jpg”, …….., “test.jpg”};

Gracias por tu ayuda… 🙂

echar un vistazo a este tutorial también se puede analizar por encima de JSON como

 JSONArray arr = new JSONArray(yourJSONresponse); List list = new ArrayList(); for(int i = 0; i < arr.length(); i++){ list.add(arr.getJSONObject(i).getString("name")); } 

El código más simple y correcto es:

 public static String[] toStringArray(JSONArray array) { if(array==null) return null; String[] arr=new String[array.length()]; for(int i=0; i 

Usar List no es una buena idea, ya que sabes la longitud de la matriz. Observe que utiliza arr.length in for condiciones para evitar llamar a un método, es decir, array.length() , en cada ciclo.

 String[] arr = jsonArray.toString().replace("},{", " ,").split(" "); 
 public static String[] getStringArray(JSONArray jsonArray) { String[] stringArray = null; if (jsonArray != null) { int length = jsonArray.length(); stringArray = new String[length]; for (int i = 0; i < length; i++) { stringArray[i] = jsonArray.optString(i); } } return stringArray; } 

Puede hacer un bucle para crear el String

 List list = new ArrayList(); for (int i=0; i 

Ahí tienes:

 String tempNames = jsonObj.names().toString(); String[] types = tempNames.substring(1, tempNames.length()-1).split(","); //remove [ and ] , then split by ',' 

Aquí está el código:

 // XXX satisfies only with this particular string format String s = "[{\"name\":\"IMG_20130403_140457.jpg\"},{\"name\":\"IMG_20130403_145006.jpg\"},{\"name\":\"IMG_20130403_145112.jpg\"},{\"name\":\"IMG_20130404_085559.jpg\"},{\"name\":\"IMG_20130404_113700.jpg\"},{\"name\":\"IMG_20130404_113713.jpg\"},{\"name\":\"IMG_20130404_135706.jpg\"},{\"name\":\"IMG_20130404_161501.jpg\"},{\"name\":\"IMG_20130405_082413.jpg\"},{\"name\":\"IMG_20130405_104212.jpg\"},{\"name\":\"IMG_20130405_160524.jpg\"},{\"name\":\"IMG_20130408_082456.jpg\"},{\"name\":\"test.jpg\"}]"; s = s.replace("[", "").replace("]", ""); s = s.substring(1, s.length() - 1); String[] split = s.split("[}][,][{]"); for (String string : split) { System.out.println(string); } 

Puede ingresar una matriz json a esta función y obtener una salida como una matriz de cadenas

Ejemplo de entrada – {“gender”: [“male”, “female”]}

salida – {“masculino”, “femenino”}

 private String[] convertToStringArray(Object array) throws Exception { return StringUtils.stripAll(array.toString().substring(1, array.toString().length()-1).split(",")); } 

Un método listo para usar:

 /** * Convert JSONArray to ArrayList. * * @param jsonArray JSON array. * @return String array. */ public static ArrayList toStringArrayList(JSONArray jsonArray) { ArrayList stringArray = new ArrayList(); int arrayIndex; JSONObject jsonArrayItem; String jsonArrayItemKey; for ( arrayIndex = 0; arrayIndex < jsonArray.length(); arrayIndex++) { try { jsonArrayItem = jsonArray.getJSONObject( arrayIndex); jsonArrayItemKey = jsonArrayItem.getString( "name"); stringArray.add( jsonArrayItemKey); } catch (JSONException e) { e.printStackTrace(); } } return stringArray; } 

Usando solo la API JAVA portátil. http://www.oracle.com/technetwork/articles/java/json-1973242.html


  try (JsonReader reader = Json.createReader(new StringReader(yourJSONresponse))) { JsonArray arr = reader.readArray(); List l = arr.getValuesAs(JsonObject.class) .stream().map(o -> o.getString("name")).collect(Collectors.toList()); } 

El siguiente código convertirá la matriz JSON del formato

[{“versión”: “70.3.0; 3”}, {“versión”: “6R_16B000I_J4; 3”}, {“versión”: “46.3.0; 3”}, {“versión”: “20.3.0 ; 2 “}, {” versión “:” 4.1.3; 0 “}, {” versión “:” 10.3.0; 1 “}]

a la lista de cadenas

[70.3.0; 3, 6R_16B000I_J4; 3, 46.3.0; 3, 20.3.0; 2, 4.1.3; 0, 10.3.0; 1]

Código :

ObjectMapper mapper = new ObjectMapper(); ArrayNode node = (ArrayNode)mapper.readTree(dataFromDb); data = node.findValuesAsText("version"); // “versión” es el nodo en el JSON

y use com.fasterxml.jackson.databind.ObjectMapper