Intereting Posts
Невозможно открыть или разработать приложения в студии Android Как вы можете проверить, оценил ли пользователь ваше приложение на рынке Android? Открытие базы данных только для чтения непосредственно в папке с ресурсами Android Wear: как делиться кодом между переносимыми и переносимыми модулями? OnCheckedChanged уволен несколько раз, Listview с флажком Аутентификация учетной записи службы Google из Как я могу интегрировать Facebook LoginButton в PreferenceScreen Общие кнопки или вкладки внизу для каждого действия Результат сборки Android Gradle в результате apk содержит как запутанные, так и не обфусканные классы Эффект пульсации на Android Lollipop CardView Изменение цвета текста панели приложений Google Place Picker Предел длины для параметров JSON по запросу GET Выполнение вызовов без ACTION_CALL Я использую listview add / remove footer для перекрестного приложения listview в версии Android 4.3? Android SDK для ARM

Получить объект JSON из ответа HTTP

Я хочу получить объект JSON из ответа Http get:

Вот мой текущий код для Http get:

 protected String doInBackground(String... params) { HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(params[0]); HttpResponse response; String result = null; try { response = client.execute(request); HttpEntity entity = response.getEntity(); if (entity != null) { // A Simple JSON Response Read InputStream instream = entity.getContent(); result = convertStreamToString(instream); // now you have the string representation of the HTML request System.out.println("RESPONSE: " + result); instream.close(); if (response.getStatusLine().getStatusCode() == 200) { netState.setLogginDone(true); } } // Headers org.apache.http.Header[] headers = response.getAllHeaders(); for (int i = 0; i < headers.length; i++) { System.out.println(headers[i]); } } catch (ClientProtocolException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return result; } 

Вот функция convertSteamToString:

 private static String convertStreamToString(InputStream is) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } 

Прямо сейчас я просто получаю строковый объект. Как я могу вернуть объект JSON.

Solutions Collecting From Web of "Получить объект JSON из ответа HTTP"

Строка, которую вы получаете, это просто объект JSON Object.toString (). Это означает, что вы получаете объект JSON, но в формате String.

Если вы хотите получить объект JSON, вы можете просто поставить:

 JSONObject myObject = new JSONObject(result); 

Сделайте это, чтобы получить JSON

 String json = EntityUtils.toString(response.getEntity()); 

Подробнее здесь: получить json из HttpResponse

Без взгляда на ваш точный вывод JSON трудно дать вам какой-то рабочий код. Этот учебник очень полезен, но вы можете использовать что-то в соответствии с:

 JSONObject jsonObj = new JSONObject("yourJsonString"); 

Затем вы можете извлечь из этого объекта json, используя:

 String value = jsonObj.getString("yourKey"); 

Это не точный ответ на ваш вопрос, но это может помочь вам

 public class JsonParser { private static DefaultHttpClient httpClient = ConnectionManager.getClient(); public static List<Club> getNearestClubs(double lat, double lon) { // YOUR URL GOES HERE String getUrl = Constants.BASE_URL + String.format("getClosestClubs?lat=%f&lon=%f", lat, lon); List<Club> ret = new ArrayList<Club>(); HttpResponse response = null; HttpGet getMethod = new HttpGet(getUrl); try { response = httpClient.execute(getMethod); // CONVERT RESPONSE TO STRING String result = EntityUtils.toString(response.getEntity()); // CONVERT RESPONSE STRING TO JSON ARRAY JSONArray ja = new JSONArray(result); // ITERATE THROUGH AND RETRIEVE CLUB FIELDS int n = ja.length(); for (int i = 0; i < n; i++) { // GET INDIVIDUAL JSON OBJECT FROM JSON ARRAY JSONObject jo = ja.getJSONObject(i); // RETRIEVE EACH JSON OBJECT'S FIELDS long id = jo.getLong("id"); String name = jo.getString("name"); String address = jo.getString("address"); String country = jo.getString("country"); String zip = jo.getString("zip"); double clat = jo.getDouble("lat"); double clon = jo.getDouble("lon"); String url = jo.getString("url"); String number = jo.getString("number"); // CONVERT DATA FIELDS TO CLUB OBJECT Club c = new Club(id, name, address, country, zip, clat, clon, url, number); ret.add(c); } } catch (Exception e) { e.printStackTrace(); } // RETURN LIST OF CLUBS return ret; } } Again, it's relatively straight forward, but the methods I'll make special note of are: JSONArray ja = new JSONArray(result); JSONObject jo = ja.getJSONObject(i); long id = jo.getLong("id"); String name = jo.getString("name"); double clat = jo.getDouble("lat"); 

Вам нужно использовать JSONObject как JSONObject ниже:

 String mJsonString = downloadFileFromInternet(urls[0]); JSONObject jObject = null; try { jObject = new JSONObject(mJsonString); } catch (JSONException e) { e.printStackTrace(); return false; } 

 private String downloadFileFromInternet(String url) { if(url == null /*|| url.isEmpty() == true*/) new IllegalArgumentException("url is empty/null"); StringBuilder sb = new StringBuilder(); InputStream inStream = null; try { url = urlEncode(url); URL link = new URL(url); inStream = link.openStream(); int i; int total = 0; byte[] buffer = new byte[8 * 1024]; while((i=inStream.read(buffer)) != -1) { if(total >= (1024 * 1024)) { return ""; } total += i; sb.append(new String(buffer,0,i)); } } catch(Exception e ) { e.printStackTrace(); return null; }catch(OutOfMemoryError e) { e.printStackTrace(); return null; } return sb.toString(); } private String urlEncode(String url) { if(url == null /*|| url.isEmpty() == true*/) return null; url = url.replace("[",""); url = url.replace("]",""); url = url.replaceAll(" ","%20"); return url; } 

Надеюсь, это поможет вам.

Существует конструктор JSONObject для превращения String в JSONObject:

http://developer.android.com/reference/org/json/JSONObject.html#JSONObject(java.lang.String)