Как получить данные от детей JSON - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть эта строка кода, и я хотел бы удалить цифры из «списка». Какой хороший способ реализовать это? Я новичок в разработке, и это место, где я застрял несколько дней.

    protected Void doInBackground(Void... voids) {
        try {
            URL url = new URL("https://{myUrl}");
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            while (line != null){
                line = bufferedReader.readLine();
                data = data + line; }

            JSONArray JA = new JSONArray(data);
            for (int i = 0; i <JA.length(); i++ ){
                JSONObject JO = (JSONObject) JA.get(i);
                singleParsed = "list:" + JO.get("list");
                dataParsed = dataParsed + singleParsed;
            } } catch (MalformedURLException e) {
            e.printStackTrace(); } catch (IOException e) {
            e.printStackTrace(); } catch (JSONException e) {
            e.printStackTrace(); }
        return null; }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        MainActivity.data.setText(this.dataParsed);
    } ```

JSON file

 {
   "common":{
      "mixed":"yes",
      "nums":{
         "list":[
            1,
            2,
            3,
            4
         ],
         "other":[
            5
         ]
      }}
} 

Ответы [ 3 ]

0 голосов
/ 06 февраля 2020

Если вы используете Retrofit для использования сервиса, вы можете добавить Gson для автоматической сериализации Json объекта Dto.

Вот пример: Получить вложенный JSON объект с помощью GSON, используя модифицированная

0 голосов
/ 07 февраля 2020

Если я предполагаю, что вы используете метод GET в своем API без аутентификации паспорта или токена, вам нужно сделать это следующим образом.

Вам необходимо определить метод API Получите входной поток JSON и проанализируйте его .

            URL url = new URL("https://{myUrl}"); //use HttpsURLConnection if you are sure it is https
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);
            conn.connect();

            InputStream input = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            StringBuilder result = new StringBuilder();
            String line;

            while ((line = reader.readLine()) != null) {
                result.append(line);
            }

            Log.e("ResponseCode",""+conn.getResponseCode()); // 200 is success
            Log.e("TAG", "result" + result); // your json

            if (conn.getResponseCode() == 200) {
            try {

                JSONObject resultOBJ= new JSONObject(result.toString());
                String common = (String)resultOBJ.get("common");
                JSONObject commonOBJ= new JSONObject(common);
                String nums = (String)commonOBJ.get("nums");

                 //do the rest ...

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

    } catch (ProtocolException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
0 голосов
/ 06 февраля 2020

попробуйте этот псевдокод:

for(int i=0 ; i<JA.length() ; i++)
    {
        try
        {
            JSONObject jobj1 = (JSONObject) JA.get(i);
            JSONObject jobj2 = jobj1.getJSONObject("common");
            JSONObject jobj3 = (JSONObject) jobj2.get("nums");
            JSONArray jarray_list = jobj3.getJSONArray("list");

            //now you have a json array in that there are item of 'list'

        }
        catch (JSONException e)
        {
            e.printStackTrace();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...