猿问

我有一个 JSON 响应,但我一直坚持使用它

我的 JSON 是:


{"status":"ok","result": 

{"provider":"instagram","title":"lovely_songs_14u","link": 

[{"link_name":"Download 

Video","video_link":"https:\/\/scontent.cdninstagram.com\/v\/t50.2886- 

16\/71650124_386743795596239_6119869649307488549_n.mp4?_nc_ht=scontent.cdninstagram.com&_nc_cat=111&oe=5D907D5B&oh=36ad5ad325cce7926307dfb730583b70"}]}}

安卓端:


StringRequest stringRequest = new StringRequest(Request.Method.GET, hp,

                new Response.Listener<String>() {

                    @Override

                    public void onResponse(String response) {

                        //hiding the progressbar after completion

                        Log.e("Response", response);


                        try {

                            JSONObject obj = new JSONObject(response);

                            categoryGetSet temp;


                            JSONArray ja_video = obj.getJSONArray("link");

                            for (int i = 0; i < ja_video.length(); i++) {

                                temp = new categoryGetSet();

                                JSONObject jo_data = ja_video.getJSONObject(i);

                                String txt_title = jo_data.getString("title");

                                String txt_link_name = jo_data.getString("link_name");

                                String txt_image = jo_data.getString("img_link");

                                String txt_video = jo_data.getString("video_link");


                                temp.setTitle(txt_title);

                                temp.setLinkName(txt_link_name);

                                temp.setImage(txt_image);

                                temp.setVideo(txt_video);


                                categoryGetSets.add(temp);


                                Log.e("dwnld", txt_link_name);

                            }


但它每次都会进入catch case,请让我知道我哪里做错了


爪哇安卓json


蝴蝶刀刀
浏览 154回答 3
3回答

qq_遁去的一_1

您的 JSON 有效。使用下面的代码来解析您的 JSON。try {&nbsp; &nbsp; JSONObject obj = new JSONObject(json);&nbsp; &nbsp; categoryGetSet temp;&nbsp; &nbsp; JSONObject resultObject = (JSONObject) obj.get("result");&nbsp; &nbsp; String txt_title = resultObject.getString("title");&nbsp; &nbsp; String txt_provider = resultObject.getString("provider");&nbsp; &nbsp; JSONArray ja_video = resultObject.getJSONArray("link");&nbsp; &nbsp; for (int i = 0; i < ja_video.length(); ++i) {&nbsp; &nbsp; &nbsp; &nbsp; temp = new categoryGetSet();&nbsp; &nbsp; &nbsp; &nbsp; JSONObject jo_data = ja_video.getJSONObject(i);&nbsp; &nbsp; &nbsp; &nbsp; String txt_link_name = jo_data.getString("link_name");&nbsp; &nbsp; &nbsp; &nbsp; String txt_video = jo_data.getString("video_link");&nbsp; &nbsp; &nbsp; &nbsp; temp.setTitle(txt_title);&nbsp; &nbsp; &nbsp; &nbsp; temp.setLinkName(txt_link_name);&nbsp; &nbsp; &nbsp; &nbsp; temp.setImage(txt_provider);&nbsp; &nbsp; &nbsp; &nbsp; temp.setVideo(txt_video);&nbsp; &nbsp; &nbsp; &nbsp; Log.e("jsonResponse: ", "txt_title" + txt_title);&nbsp; &nbsp; &nbsp; &nbsp; Log.e("jsonResponse: ", "txt_link_name" + txt_link_name);&nbsp; &nbsp; &nbsp; &nbsp; Log.e("jsonResponse: ", "txt_provider" + txt_provider);&nbsp; &nbsp; &nbsp; &nbsp; Log.e("jsonResponse: ", "txt_video" + txt_video);&nbsp; &nbsp; }} catch (JSONException e) {&nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; Log.e("catch", e.getLocalizedMessage());}

慕哥6287543

因为链接数组位于结果对象内部,但您试图从外部对象获取,所以您会收到异常。尝试这样解析JSONObject&nbsp;obj&nbsp;=&nbsp;new&nbsp;JSONObject(response); JSONObject&nbsp;resultObj=obj.getJSONObject("result"); JSONArray&nbsp;ja_video&nbsp;=&nbsp;resultObj.getJSONArray("link");

绝地无双

它会陷入困境,因为你试图以错误的方式解析,你需要按顺序传递每个 JSON 对象和数组,波纹管是你的结构主要 Json 对象链接数组带有数据的子对象结果对象另一个错误是你正在尝试一些不存在的密钥尝试下面的代码它会对你有帮助StringRequest stringRequest = new StringRequest(Request.Method.GET, hp,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new Response.Listener<String>() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onResponse(String response) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //hiding the progressbar after completion&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("Response", response);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject mainObject = new JSONObject(response);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject resultObj=mainObject.getJSONObject("result");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONArray linkJsonArrya = resultObj.getJSONArray("link");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; categoryGetSet temp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < linkJsonArrya.length(); i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp = new categoryGetSet();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject jo_data = linkJsonArrya.getJSONObject(i);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(jo_data.has("title")){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp.setTitle(jo_data.getString("title"));&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp.setTitle(jo_data.getString(""));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(jo_data.has("link_name")){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp.setLinkName(jo_data.getString("link_name"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp.setLinkName(jo_data.getString(""));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(jo_data.has("img_link")){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp.setImage(jo_data.getString("img_link"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp.setImage(jo_data.getString(""));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(jo_data.has("video_link")){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp.setVideo(jo_data.getString("video_link"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp.setVideo(jo_data.getString(""));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; categoryGetSets.add(temp);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("try", "try");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (JSONException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("catch", "catch");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new Response.ErrorListener() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onErrorResponse(VolleyError error) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NetworkResponse networkResponse = error.networkResponse;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (networkResponse != null) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("Status code", String.valueOf(networkResponse.statusCode));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Toast.makeText(getActivity().getApplicationContext(), String.valueOf(networkResponse.statusCode), Toast.LENGTH_SHORT).show();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; RequestQueue requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());&nbsp; &nbsp; &nbsp; &nbsp; requestQueue.add(stringRequest);&nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答