как получить массив значений в виде значений в объекте json в Android

#android #json #xml

#Android #json #xml

Вопрос:

 String finalData = "{"Books":[{"name":"Genesis","chapters1":["Chapter No:1","Chapter No:2","Chapter No:3","Chapter No:4","Chapter No:5","Chapter No:6","Chapter No:7","Chapter No:8","Chapter No:9","Chapter No:10"]}]};



private void ChaptersData(String finalData) {

        try {
            JSONObject mainchapter=new JSONObject(finalData);
            JSONArray chapterdata=mainchapter.getJSONArray("Books");
            chapterList=new String[chapterdata.length()];
             for (int j=0;j<=chapterdata.length();j  ){
                 JSONObject chapInterData=(JSONObject) chapterdata.get(j);

                 String chapter=chapInterData.getString(0);

                 Log.e("Chapter", " " chapter);
                 chapterList[j]=chapter;
             }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
  

теперь, как я могу получить главы из объекта json

Ответ №1:

поместите этот код в цикл for

 JSONArray chap = chapInterData.getJSONArray("chapters1");
for(int k =0;k<chap.length();k  )
{
    String data=chap.getString(k);
    Log.e("data", " " data);
}
  

вставьте data в нужный array

Ответ №2:

Я изменил ваш код, используя библиотеку Google Gson, которая является более надежной и простой в использовании для синтаксического анализа json:

 String finalData = "{"Books":[{"name":"Genesis","chapters":["Chapter No:1","Chapter No:2","Chapter No:3","Chapter No:4","Chapter No:5","Chapter No:6","Chapter No:7","Chapter No:8","Chapter No:9","Chapter No:10"]}]}";

private void ChaptersData(String finalData) {
    Gson gson = new Gson();

    BookModel bookModel = gson.fromJson(finalData, BookModel.class);
    BookModel.Books[] books = bookModel.getBooks();

    for (BookModel.Books book : books) {
        String[] chapters = book.getChapters();
        for (String chapter : chapters) {
            Log.e("Chapter", " "   chapter);
        }
    }
}

class BookModel {
    private Books[] Books;

    public Books[] getBooks() {
        return Books;
    }

    class Books {
        private String name;

        private String[] chapters;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String[] getChapters() {
            return chapters;
        }

        public void setChapters(String[] chapters1) {
            this.chapters = chapters1;
        }
    }
}
  

добавьте это в тег зависимости build.gradle вашего приложения:

скомпилируйте ‘com.google.code.gson:gson:2.7’