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(" ");