从Android中的网页解析JSON而无需括号

时间:2019-02-19 21:47:09

标签: android arrays json brackets

我需要从https://realtimebitcoin.info/stats/获取JSON数据 (顺便说一下,该链接可能会将您仅重定向到https://realtimebitcoin.info/https://realtimebitcoin.info,如果发生这种情况,只需在搜索框文本的末尾添加stats /或/ 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 :(得分:0)

这样的JSON端点很少(甚至永远是手写的),通常会通过某种对象的库通过库转换为JSON。

提供的链接是具有属性tickertotalbtchashrate的JSON对象。

请记住,解析JSON的最简单方法是使用JSONObject。

JSONObject jObject = new JSONObject( str );

其中str是包含JSON的字符串。详细了解如何使用JSONObject here