Разбор JSON без скобок с веб-страницы в Android - PullRequest
0 голосов
/ 20 февраля 2019

Мне нужно получить данные JSON из https://realtimebitcoin.info/stats/ (Кстати, ссылка может перенаправить вас только на https://realtimebitcoin.info/ или https://realtimebitcoin.info Если это произойдет, просто добавьте статистику /или / stats / в конце текста окна поиска).

К сожалению, автор этого документа JSON не удосужился заключить его в квадратные скобки, и документ даже не может быть проанализирован должным образом.Я попытался принудительно окружить его "[]", но это только создало нулевой объект в конце, и он все еще не может быть проанализирован.Я имею в виду, что JSONException продолжает создаваться.Вот код:

private static class UpdateBitcoinData extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {

        super.onPreExecute();

    }

    @Override
    protected Void doInBackground(Void... voids) {

        try {

            // URL url = new URL("https://api.myjson.com/bins/j5f6b");
            // URL url = new URL("https://api.myjson.com/bins/gfoa2");
            String data = "";
            URL url = new URL("https://realtimebitcoin.info/stats/");
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line = "";
            while (line != null) {
                line = bufferedReader.readLine();
                data = data + line;
            }
            String fixed = "[" + data + "]";
            JSONArray jsonArray = new JSONArray(fixed);
            for (int index = 0; index < jsonArray.length(); index++) {

                JSONObject jsonObject = (JSONObject) jsonArray.get(index);
                /* singleParsed =  "Name:" + JO.get("name") + "\n"+
                        "Password:" + JO.get("password") + "\n"+
                        "Contact:" + JO.get("contact") + "\n"+
                        "Country:" + JO.get("country") + "\n"; */
                BitcoinInformation.TEST = String.valueOf(jsonObject.get("ticker"));

            }

        } catch (MalformedURLException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        } catch (JSONException e) {

            e.printStackTrace();
            BitcoinInformation.TEST = e.getMessage();
        }

        return null;

    }

    @Override
    protected void onPostExecute(Void aVoid) {

        super.onPostExecute(aVoid);

    }

}

Любые решения будут полезны!

1 Ответ

0 голосов
/ 20 февраля 2019

Конечные точки JSON, подобные этим, очень редко, если вообще когда-либо, написаны от руки, они обычно преобразуются в JSON через библиотеку из какого-либо объекта.

Предоставленная ссылка представляет собой объект JSON с атрибутамиticker, totalbtc и hashrate.

С учетом этого самый простой способ анализа JSON - это JSONObject.

JSONObject jObject = new JSONObject( str );

Где str - этострока, содержащая JSON.Подробнее о том, как использовать JSONObject здесь

...