jsonnode formato example convert arraynode java android json

java - formato - Convertir JSONArray a String Array



jsonnode (11)

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

Quiero hacer una pregunta sobre la conversión de un jsonArray a un 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"}, " ":" IMG_20130405_082413.jpg "}, {" name ":" IMG_20130405_104212.jpg "}, {" name ":" IMG_20130405_160524.jpg "}," "," "," "," "," "," IMG_20130408_082456.jpg "}" "test.jpg"}]

¿Cómo puedo convertir jsonArray que tengo a StringArray para poder obtener StringArray así?

array = {"IMG_20130403_140457.jpg", "IMG_20130403_145006.jpg", ........, "test.jpg"};

Gracias por tu ayuda... :)


Eche un vistazo a este tutorial también puede analizar por encima de json como

JSONArray arr = new JSONArray(yourJSONresponse); List<String> list = new ArrayList<String>(); 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<arr.length; i++) { arr[i]=array.optString(i); } return arr; }

Usar List<String> no es una buena idea, ya que sabes la longitud de la matriz. Observe que usa arr.length in for condición evite llamar a un método, es decir, array.length() , en cada ciclo.


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

[{"version": "70.3.0; 3"}, {"version": "6R_16B000I_J4; 3"}, {"version": "46.3.0; 3"}, {"version": "20.3.0 ; 2 "}, {" version ":" 4.1.3; 0 "}, {" version ":" 10.3.0; 1 "}]

a la lista de cuerdas

[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"); // "version" es el nodo en el JSON

y use com.fasterxml.jackson.databind.ObjectMapper


Hay que ir

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


Puede hacer un bucle para crear la cadena

List<String> list = new ArrayList<String>(); for (int i=0; i<jsonArray.length(); i++) { list.add( jsonArray.getString(i) ); } String[] stringArray = list.toArray(new String[list.size()]);


Puedes ingresar json array a esta función obtener salida como string array

Ejemplo de entrada - {"género": ["masculino", "femenino"]}

salida - {"macho", "hembra"}

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<String>. * * @param jsonArray JSON array. * @return String array. */ public static ArrayList<String> toStringArrayList(JSONArray jsonArray) { ArrayList<String> stringArray = new ArrayList<String>(); 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 de 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<String> l = arr.getValuesAs(JsonObject.class) .stream().map(o -> o.getString("name")).collect(Collectors.toList()); }


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; }


String[] arr = jsonArray.toString().replace("},{", " ,").split(" ");