亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我有一個 JSON 響應,但我一直堅持使用它

我有一個 JSON 響應,但我一直堅持使用它

蝴蝶刀刀 2023-09-06 16:41:55
我的 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
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

您的 JSON 有效。


使用下面的代碼來解析您的 JSON。


try {

    JSONObject obj = new JSONObject(json);

    categoryGetSet temp;


    JSONObject resultObject = (JSONObject) obj.get("result");


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

    String txt_provider = resultObject.getString("provider");

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


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

        temp = new categoryGetSet();

        JSONObject jo_data = ja_video.getJSONObject(i);

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

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


        temp.setTitle(txt_title);

        temp.setLinkName(txt_link_name);

        temp.setImage(txt_provider);

        temp.setVideo(txt_video);


        Log.e("jsonResponse: ", "txt_title" + txt_title);

        Log.e("jsonResponse: ", "txt_link_name" + txt_link_name);

        Log.e("jsonResponse: ", "txt_provider" + txt_provider);

        Log.e("jsonResponse: ", "txt_video" + txt_video);

    }

} catch (JSONException e) {

    e.printStackTrace();

    Log.e("catch", e.getLocalizedMessage());

}


查看完整回答
反對 回復 2023-09-06
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

因為鏈接數組位于結果對象內部,但您試圖從外部對象獲取,所以您會收到異常。

嘗試這樣解析

JSONObject obj = new JSONObject(response);
JSONObject resultObj=obj.getJSONObject("result");
JSONArray ja_video = resultObj.getJSONArray("link");


查看完整回答
反對 回復 2023-09-06
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

它會陷入困境,因為你試圖以錯誤的方式解析,
你需要按順序傳遞每個 JSON 對象和數組,波紋管是你的結構

  • 主要 Json 對象

    • 鏈接數組

    • 帶有數據的子對象

    • 結果對象

另一個錯誤是你正在嘗試一些不存在的密鑰

嘗試下面的代碼它會對你有幫助

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 mainObject = new JSONObject(response);

                            JSONObject resultObj=mainObject.getJSONObject("result");

                            JSONArray linkJsonArrya = resultObj.getJSONArray("link");

                            categoryGetSet temp;


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

                                temp = new categoryGetSet();

                                JSONObject jo_data = linkJsonArrya.getJSONObject(i);


                                if(jo_data.has("title")){

                                    temp.setTitle(jo_data.getString("title"));    

                                }else {

                                    temp.setTitle(jo_data.getString(""));

                                }


                                if(jo_data.has("link_name")){

                                    temp.setLinkName(jo_data.getString("link_name"));

                                }else {

                                    temp.setLinkName(jo_data.getString(""));

                                }


                                if(jo_data.has("img_link")){

                                    temp.setImage(jo_data.getString("img_link"));

                                }else {

                                    temp.setImage(jo_data.getString(""));

                                }


                                if(jo_data.has("video_link")){

                                    temp.setVideo(jo_data.getString("video_link"));

                                }else {

                                    temp.setVideo(jo_data.getString(""));

                                }

                                categoryGetSets.add(temp);

                            }

                            Log.e("try", "try");


                        } catch (JSONException e) {

                            e.printStackTrace();

                            Log.e("catch", "catch");


                        }

                    }

                },

                new Response.ErrorListener() {

                    @Override

                    public void onErrorResponse(VolleyError error) {


                        NetworkResponse networkResponse = error.networkResponse;

                        if (networkResponse != null) {

                            Log.e("Status code", String.valueOf(networkResponse.statusCode));

                            Toast.makeText(getActivity().getApplicationContext(), String.valueOf(networkResponse.statusCode), Toast.LENGTH_SHORT).show();

                        }

                    }

                });


        RequestQueue requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());

        requestQueue.add(stringRequest);

    }


查看完整回答
反對 回復 2023-09-06
  • 3 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號