簡體   English   中英

JSONArray java.lang.String 無法轉換為 JSONObject

[英]JSONArray java.lang.String cannot be converted to JSONObject

我正在使用 JSONObject 解析 JSON 文件並獲取其內容。 一切正常,但標簽未顯示在 RecyclerView 中。

這是代碼:

private void direct_url(){
    v_title = findViewById(R.id.vid_title);
    String url = kw_url_holder.getText().toString();
    String server_tag_url = "https://server.com/json.json";
    StringRequest request = new StringRequest(Request.Method.GET, server_tag_url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                String title,views,likes,dislikes,publishedon,duration;
                JSONObject object=new JSONObject(response);
                title = object.getString("title");
                v_title.setText(title);
                JSONArray tagsJsonArray = object.getJSONArray("tags");
                for(int i=0; i<tagsJsonArray.length();i++){
                    try {
                        JSONObject tagObj = new JSONObject();
                        tagObj = tagsJsonArray.getJSONObject(i);
                        TagUrlResultsModel tagUrlResultsModel = new TagUrlResultsModel();
                        tagUrlResultsModel.setV_tags(tagObj.getString(String.valueOf(i)));
                        url_result.add(tagUrlResultsModel);
                    }catch (JSONException e){
                        e.printStackTrace();
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("error",error.toString());
        }
    });
    url_queue = Volley.newRequestQueue(tags.this);
    url_queue.add(request);
}

JSON:

{
    "title": "The Title",
    "tags": ["tag1", "tag2"]
}

日志中的錯誤:

錯誤:java.lang.String 無法轉換為 JSONObject

問題出在你的 for 循環中:

JSONObject tagObj = new JSONObject();
tagObj = tagsJsonArray.getJSONObject(i);
TagUrlResultsModel tagUrlResultsModel = new TagUrlResultsModel();
tagUrlResultsModel.setV_tags(tagObj.getString(String.valueOf(i)));
url_result.add(tagUrlResultsModel);

它應該是

String tag;
tag = tagsJsonArray.getString(i);
TagUrlResultsModel tagUrlResultsModel = new TagUrlResultsModel();
tagUrlResultsModel.setV_tags(tag);
url_result.add(tagUrlResultsModel);

使用getString()而不是getJSONObject()作為 JSONArray 的內容只是字符串。

這就是為什么你會陷入困境:

錯誤:java.lang.String 無法轉換為 JSONObject

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM