无法正确创建JSONObject

问题描述 投票:0回答:2

我想将服务器中的图像放入我的Android应用程序中。我的第一步是:

我有来自server的这个JSON字符串数组

{"results":"[{\"url\":\"https:\\\/\\\/augmentedandroidapp.000webhostapp.com\\\/images\\\/kamara1.jpg\"},{\"url\":\"https:\\\/\\\/augmentedandroidapp.000webhostapp.com\\\/images\\\/kamara2.jpg\"},{\"url\":\"https:\\\/\\\/augmentedandroidapp.000webhostapp.com\\\/images\\\/kamara3.jpg\"}]"}

我从我的应用程序中获取了以下代码并且工作正常的服务器中的URL。

  private void getURLs() {
    class GetURLs extends AsyncTask<String, Void, String> {
        ProgressDialog loading;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loading = ProgressDialog.show(GalleryTargets.this, "Loading...", "Please Wait...", true, true);
        }
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            loading.dismiss();
            Toast.makeText(GalleryTargets.this,s,Toast.LENGTH_LONG).show();
            imageJSON = s;
            Log.e(LOGTAG, "Succeed Read url" + imageJSON);         
            extractJSON(imageJSON);
        }
        @Override
        protected String doInBackground(String... strings) {
            String uri = strings[0];
            BufferedReader bufferedReader = null;
            try {
                URL url = new URL(uri);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                StringBuilder sb = new StringBuilder();
                bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
                String json;
                while ((json = bufferedReader.readLine()) != null) {
                    sb.append(json);
                }
                return sb.toString().trim();
            } catch (Exception e) {
                return null;
            }
        }
    }
    GetURLs gu = new GetURLs();
    gu.execute(newurl);
}

但是,我想用下面的方法将json提取到一个新的JSON对象中,但抛出异常,Json对象没有创建。有什么想法发生这种异常吗?先感谢您!

private void extractJSON(String jsonString){
    try {
        JSONObject jsonObject = new JSONObject(jsonString);
        JSONArray jArray  = jsonObject.getJSONArray("results");
        for (int i = 0; i < jArray.length(); i++) {
            JSONObject oneObject = jArray.getJSONObject(i);
            oneObject.getString("url");//
        }
        Log.e(LOGTAG, "JsonArray Succeed" );

    } catch (JSONException e) {
        e.printStackTrace();
        Log.e(LOGTAG, "JsonArray exception");

    }
}
android json
2个回答
0
投票

而不是JSONArray jArray = jsonObject.getJSONArray("results");尝试JSONArray jArray = new JSONArray (jsonObject.getString("results"));

你要的是一个json数组,但它是一个字符串。


0
投票

json上有一个错误..在“结果”之后:一定不能有引号

这是对的

{"results":[{\"url\":\"https:\\\/\\\/augmentedandroidapp.000webhostapp.com\\\/images\\\/kamara1.jpg\"},{\"url\":\"https:\\\/\\\/augmentedandroidapp.000webhostapp.com\\\/images\\\/kamara2.jpg\"},{\"url\":\"https:\\\/\\\/augmentedandroidapp.000webhostapp.com\\\/images\\\/kamara3.jpg\"}]}
© www.soinside.com 2019 - 2024. All rights reserved.