JSONArray java .lang.String не может быть преобразовано в JSONObject - PullRequest
1 голос
/ 26 апреля 2020

Я использую 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

1 Ответ

1 голос
/ 26 апреля 2020

Проблема внутри вас: l oop in:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...