Я долго искал эту вещь, но все еще не могу ее найти.
У меня есть решения с JSONObject obj = new JSONObject(result)
но я не могу использовать это, получая Необработанное исключение JSON там.
Итак, что я получил:
[{"NAME":"test"},{"NAME":"John"}]
Этот бит JSON может быть расширен.
Что я получил в своем коде:
Сначала я получаю данные из .php формы.
public class Download extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
String out = null;
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
final HttpParams httpParameters = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 15000);
HttpConnectionParams.setSoTimeout(httpParameters, 15000);
HttpGet httpPost = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
out = EntityUtils.toString(httpEntity, HTTP.UTF_8);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return out;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
showJSON.setText(result);
Log.e(TAG, result);
jsonText = result;
}
}
Чтобы показать код в приложении, я использую Textview:
private ArrayList<searchResults> GetSearchResults(){
ArrayList<searchResults> results = new ArrayList<searchResults>();
searchResults sr1 = new searchResults();
sr1.setName("test"); //this should be jsonobj.getString("NAME")
results.add(sr1);
sr1 = new searchResults();
sr1.setName("test1"); //This should be jsonobj.getString("NAME")
results.add(sr1);
return results;
}
Теперь: как мне получить тестовое задание а также Джон кусок из массива? И после этого, как JSON может быть расширен, как мне сделать представление (private ArrayList getSearchResults) динамическим (автоматически добавляя новые строки для большего количества значений в массиве)?
Я надеюсь, что это несколько читабельно. Не стесняйтесь редактировать!
Заранее спасибо.
Чтобы преобразовать JSON-String в объект, я бы рекомендовал использовать Gson.
Чтобы добавить Gson, добавьте compile 'com.google.code.gson:gson:2.4'
к вашим зависимостям build.gradle.
SearchResult[] data = new Gson().fromJson(out, SearchResult[].class);
конвертирует вашу строку в массив SearchResults.
Однако я не знаю, что вы имеете в виду под динамическим добавлением, попробуйте обновить ваш вопрос, если преобразование работает.
Других решений пока нет …