Преобразование JSONArray в строковый массив
Я хочу задать вопрос о преобразовании a jsonArray в StringArray Android on. Вот мой код для получения jsonArray с сервера.
jsonArray
StringArray
Android
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.
JSON
[ {"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"}]
Как я могу преобразовать JSONArray, который у меня есть, в stringArray, чтобы я мог получить stringArray следующим образом:
array = {"IMG_20130403_140457.jpg","IMG_20130403_145006.jpg",........,"test.jpg"};
Спасибо за вашу помощь :)
Переведено автоматически
Ответ 1
Взгляните на это руководство. Также вы можете разобрать приведенный выше 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"));}
Ответ 2
Самый простой и корректный код - это:
public static String[] toStringArray(JSONArray array) { if(array==null) return new String[0]; 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 in for, чтобы избежать вызова метода, т.Е. array.length(), в каждом цикле.
List<String>
arr.length
for
array.length()
Ответ 3
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;}
Ответ 4
УЖАСНЫЙ, УЖАСНЫЙ, УЖАСНЫЙ взлом:
String[] arr = jsonArray.toString().replace("},{", " ,").split(" ");