Intereting Posts
Как скрыть панель инструментов при прокрутке списка? (Так же, как в Google Play Store) Невозможно отключить анимацию перехода при нажатии кнопки «Назад» Android-сервис с несколькими темами Сколько Android-магазинов приложений для отправки …? Cordova APP – Можно ли показывать подачу камеры в контейнере? Styling / coloring кнопка SwitchCompat в Android Lollipop для дизайна материалов Указание оперативной памяти Android Market в манифесте Ошибка компиляции с API 10 Cordova / Phonegap / Ionic – получение Push-сообщения через PushPlugin и сохранение данных на localStorage, даже если пользователь отклоняет уведомление Можно ли вычислить скорость, интегрируя данные акселерометра с течением времени? Выделение селектора, который можно использовать на прелетополе Как реализовать просветление (список)? Как использовать USB-устройство в Android Более низкая версия, например, Android 2.2? Как я могу отключить 3G / Data программно на Android? Значение равно match_parent или fill_parent в dimens.xml?

Преобразование JSONArray в String Array

Я хочу задать вопрос о преобразовании jsonArray в StringArray на Android. Вот мой код, чтобы получить jsonArray с сервера.

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

И это JSON.

[{ "Имя": "IMG_20130403_140457.jpg"}, { "имя": "IMG_20130403_145006.jpg"}, { "имя": "IMG_20130403_145112.jpg"}, { "имя": "IMG_20130404_085559.jpg"}, { "название": "IMG_20130404_113700.jpg"}, { "имя": "IMG_20130404_113713.jpg"}, { "имя": "IMG_20130404_135706.jpg"}, { "имя": "IMG_20130404_161501.jpg"}, { "имя ":" IMG_20130405_082413.jpg "}, {" имя ":" IMG_20130405_104212.jpg "}, {" имя ":" IMG_20130405_160524.jpg "}, {" имя ":" IMG_20130408_082456.jpg "}, {" имя ": "test.jpg"}]

Как я могу преобразовать jsonArray, который у меня есть в StringArray, поэтому я могу получить StringArray следующим образом:

Array = {"IMG_20130403_140457.jpg", "IMG_20130403_145006.jpg", …….., "test.jpg"};

Спасибо за помощь… 🙂

Взгляните на этот урок, вы также сможете разобрать выше json

 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")); } 
 String[] arr = jsonArray.toString().replace("},{", " ,").split(" "); 

Самый простой и правильный код:

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

Использование List<String> – не очень хорошая идея, так как вы знаете длину массива. Обратите внимание, что он использует arr.length for условия, чтобы избежать вызова метода, т.е. array.length() , в каждом цикле.

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

Вы можете создать цикл для создания строки

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

Там вы идете:

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

Вот код:

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

Вы можете ввести json-массив для этой функции get output как строковый массив

Example Input – {"gender": ["male", "female"]}

Output – {"male", "female"}

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

Готовый к использованию метод:

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

Использование только портативного JAVA API. 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()); }