Помогите парсить json на java
{ "sbook": [ { "idS": "1", "til": "Uzb", "janr": "Ertaklar", "nomi": "Kiyik bilan kadi", "yozuvchi": "Ertak", "rasm": "1.jpg", "likes": "99", "audio": [ { "idA": "1", "aName": "1 Qism", "aAudio": "1.mp3" } ] }, { "idS": "2", "til": "Uzb", "janr": "Ertaklar", "nomi": "Yetim Abilay", "yozuvchi": "Ertak", "rasm": "1.jpg", "likes": "99", "audio": [ { "idA": "1", "aName": "1 Qism", "aAudio": "1.mp3" }, { "idA": "2", "aName": "2 Qism", "aAudio": "2.mp3" } ] }, { "idS": "3", "til": "Uzb", "janr": "Ertaklar", "nomi": "Malikai Husniobod", "yozuvchi": "Ertak", "rasm": "1.jpg", "likes": "99", "audio": [ { "idA": "1", "aName": "1 Qism", "aAudio": "1.mp3" }, { "idA": "2", "aName": "2 Qism", "aAudio": "2.mp3" }, { "idA": "3", "aName": "3 Qism", "aAudio": "3.mp3" } ] }, { "idS": "4", "til": "Uzb", "janr": "Ertaklar", "nomi": "Tulki bilan Turna", "yozuvchi": "Ertak", "rasm": "1.jpg", "likes": "99", "audio": [ { "idA": "1", "aName": "1 Qism", "aAudio": "1.mp3" } ] } ], "users": [] }
class AModel {
private int idS;
private String til;
private String janr;
private String nomi;
private String yozuvchi;
private String rasm;
private int likes;
List<AAudio> audio;
public AModel(int idS, String til, String janr, String nomi, String yozuvchi, String rasm, int likes, List<AAudio> audio) {
this.idS = idS;
this.til = til;
this.janr = janr;
this.nomi = nomi;
this.yozuvchi = yozuvchi;
this.rasm = rasm;
this.likes = likes;
this.audio = audio;
}
public int getIdS() {
return idS;
}
public String getTil() {
return til;
}
public String getJanr() {
return janr;
}
public String getNomi() {
return nomi;
}
public String getYozuvchi() {
return yozuvchi;
}
public String getRasm() {
return rasm;
}
public int getLikes() {
return likes;
}
public List<AAudio> getAudio() {
return audio;
}
}
class AAudio {
private String idA;
private String aName;
private String aAudio;
public AAudio(String idA, String aName, String aAudio) {
this.idA = idA;
this.aName = aName;
this.aAudio = aAudio;
}
public String getIdA() {
return idA;
}
public String getaName() {
return aName;
}
public String getaAudio() {
return aAudio;
}
}
public class GenreCollectionView extends AppCompatActivity implements GenreAdapter.OnItemClickListener {
public static final String EXTRA_IDS = "idS";
public static final String EXTRA_NOMI = "nomi";
public static final String EXTRA_YOZUVCHI = "yozuvchi";
public static final String EXTRA_RASM = "rasm";
TextView topNavName;
ImageButton topBackImageButtonActivityGenre;
ImageButton topFilterGenre;
ImageButton topSearchGenre;
ImageButton genreClose;
LinearLayout genreTopNavBar;
RelativeLayout genreRelSearchBar;
SearchView genreSearchBar;
private RecyclerView genreRecyclerView;
private GenreAdapter genreAdapter;
private ArrayList<AModel> modelList;
private RequestQueue gRequestQueue;
private static final String TAG = "MyLogs";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_genre_collection_view);
Intent genreNameIntent = getIntent();
final String LName = genreNameIntent.getStringExtra("selectedName");
topNavName = findViewById(R.id.genreNavTopText);
topNavName.setText(LName);
topBackImageButtonActivityGenre = findViewById(R.id.topBackActivityGenre);
topBackImageButtonActivityGenre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
topFilterGenre = findViewById(R.id.topFilterGenre);
topFilterGenre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View viewF) {
PopupMenu popupMenu = new PopupMenu(GenreCollectionView.this, viewF);
popupMenu.inflate(R.menu.filter_navigation_menu);
popupMenu.show();
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.yangi:
return true;
case R.id.zorlari:
return true;
default:
return false;
}
}
});
}
});
topSearchGenre = findViewById(R.id.topSearchGenre);
genreClose = findViewById(R.id.genreClose);
genreTopNavBar = findViewById(R.id.genreTopNavBar);
genreRelSearchBar = findViewById(R.id.genreRelSearchBar);
genreSearchBar = findViewById(R.id.genreSearchBar);
genreRelSearchBar.setVisibility(View.INVISIBLE);
topSearchGenre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
genreTopNavBar.setVisibility(View.INVISIBLE);
genreRelSearchBar.setVisibility(View.VISIBLE);
}
});
genreClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
genreTopNavBar.setVisibility(View.VISIBLE);
genreRelSearchBar.setVisibility(View.INVISIBLE);
}
});
genreRecyclerView = findViewById(R.id.genreRecyclerView);
genreRecyclerView.setHasFixedSize(true);
genreRecyclerView.setLayoutManager(new LinearLayoutManager(this));
GridLayoutManager gridLayoutManager = new GridLayoutManager(getApplicationContext(),2);
genreRecyclerView.setLayoutManager(gridLayoutManager);
modelList = new ArrayList<>();
gRequestQueue = Volley.newRequestQueue(this);
jsonParse();
genreSearchBar.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
Toast.makeText(GenreCollectionView.this,s,Toast.LENGTH_SHORT).show();
return true;
}
});
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavViewBar);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
Menu menu = bottomNavigationView.getMenu();
MenuItem menuItem = menu.getItem(0);
menuItem.setChecked(true);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener()
{
@Override
public boolean onNavigationItemSelected (@NonNull MenuItem item){
switch (item.getItemId()) {
case R.id.catalog:
break;
case R.id.library:
finish();
Intent intentCatalog = new Intent(GenreCollectionView.this, Library.class);
startActivity(intentCatalog);
break;
case R.id.openBook:
Toast.makeText(getApplicationContext(),"Ashula Oynasi Genre",Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
finish();
Intent intentSetting = new Intent(GenreCollectionView.this, Settings.class);
startActivity(intentSetting);
break;
}
return false;
}
});
}
private void jsonParse() {
String ROOT_URL = "https.json";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, ROOT_URL, null,
new com.android.volley.Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArrayI = response.getJSONArray("sbook");
for (int i = 0; i < jsonArrayI.length(); i++) {
JSONObject sbook = jsonArrayI.getJSONObject(i);
int idS = sbook.getInt("idS");
String til = sbook.getString("til");
String janr = sbook.getString("janr");
String nomi = sbook.getString("nomi");
String yozuvchi = sbook.getString("yozuvchi");
String rasm = sbook.getString("rasm");
int likes = sbook.getInt("likes");
JSONArray jsonArrayJ = response.getJSONArray("audio");
for (int j = 0; j < jsonArrayJ.length(); j++) {
JSONObject audio = jsonArrayI.getJSONObject(j);
int idA = audio.getInt("idA");
String aName = audio.getString("aName");
String aAudio = audio.getString("aAudio");
modelList.add(new AModel(idS, til, janr, nomi, yozuvchi, rasm, likes ^^ Суда как подключит 2 таблицу^^));
}
}
genreAdapter = new GenreAdapter(GenreCollectionView.this, modelList);
genreRecyclerView.setAdapter(genreAdapter);
genreAdapter.setOnItemClickListener(GenreCollectionView.this);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
gRequestQueue.add(request);
}
@Override
public void onItemClick(int i) {
Intent detailIntent = new Intent(this, DetailView.class);
AModel clickedItem = modelList.get(i);
detailIntent.putExtra(EXTRA_IDS, clickedItem.getIdS());
detailIntent.putExtra(EXTRA_NOMI, clickedItem.getNomi());
detailIntent.putExtra(EXTRA_YOZUVCHI, clickedItem.getYozuvchi());
detailIntent.putExtra(EXTRA_RASM, clickedItem.getRasm());
startActivity(detailIntent);
}
}