I'm trying to parse a json data from url to my app using VOLLEY this is my JSON:
{
"code": 200,
"status": "OK",
"data": {
"number": 1,
"name": "سُورَةُ ٱلْفَاتِحَةِ",
"englishName": "Al-Faatiha",
"englishNameTranslation": "The Opening",
"revelationType": "Meccan",
"numberOfAyahs": 7,
"ayahs": [
{
"number": 1,
"text": "بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ",
"numberInSurah": 1,
"juz": 1,
"manzil": 1,
"page": 1,
"ruku": 1,
"hizbQuarter": 1,
"sajda": false
},
{
"number": 2,
"text": "الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ",
"numberInSurah": 2,
"juz": 1,
"manzil": 1,
"page": 1,
"ruku": 1,
"hizbQuarter": 1,
"sajda": false
},
{
"number": 3,
"text": "الرَّحْمَٰنِ الرَّحِيمِ",
"numberInSurah": 3,
"juz": 1,
"manzil": 1,
"page": 1,
"ruku": 1,
"hizbQuarter": 1,
"sajda": false
},
{
"number": 4,
"text": "مَالِكِ يَوْمِ الدِّينِ",
"numberInSurah": 4,
"juz": 1,
"manzil": 1,
"page": 1,
"ruku": 1,
"hizbQuarter": 1,
"sajda": false
},
{
"number": 5,
"text": "إِيَّاكَ نَعْبُدُ وَإِيَّاكَ نَسْتَعِينُ",
"numberInSurah": 5,
"juz": 1,
"manzil": 1,
"page": 1,
"ruku": 1,
"hizbQuarter": 1,
"sajda": false
},
{
"number": 6,
"text": "اهْدِنَا الصِّرَاطَ الْمُسْتَقِيمَ",
"numberInSurah": 6,
"juz": 1,
"manzil": 1,
"page": 1,
"ruku": 1,
"hizbQuarter": 1,
"sajda": false
},
{
"number": 7,
"text": "صِرَاطَ الَّذِينَ أَنْعَمْتَ عَلَيْهِمْ غَيْرِ الْمَغْضُوبِ عَلَيْهِمْ وَلَا الضَّالِّينَ",
"numberInSurah": 7,
"juz": 1,
"manzil": 1,
"page": 1,
"ruku": 1,
"hizbQuarter": 1,
"sajda": false
}
],
"edition": {
"identifier": "quran-simple",
"language": "ar",
"name": "Simple",
"englishName": "Simple",
"format": "text",
"type": "quran",
"direction": "rtl"
}
}
}
i want to display "ayahs" array but only "text" object put them in string
and send them to another activity
using intent
and display them in textView
Help me please
this is my parse method
public String[] parseJSON(){
final String[] myText=new String[6];
String url = "http://api.alquran.cloud/v1/surah/1";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject jsonObject=response.getJSONObject("data");
JSONArray jsonArray=jsonObject.getJSONArray("ayahs");
for(int i=0;i==jsonArray.length();i++){
JSONObject aya=jsonArray.getJSONObject(i);
String text=aya.getString("text");
myText[i] =text;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mRequestQueue.add(request);
return myText;
}
this my intent send method
public void onItemClick(int position) {
//ExampleItem clickedItem = mExampleList.get(position);
// final int sorahNumber=++position;
Intent detailIntent = new Intent(this, DetailActivity.class);
String[] myText = parseJSON();
detailIntent.putExtra("text", myText);
startActivity(detailIntent);
}
this is my intent catcher
public class DetailActivity extends AppCompatActivity {
private TextView sorah_tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
sorah_tv=findViewById(R.id.sorah_tv);
Intent intent=getIntent();
String[] text=intent.getStringArrayExtra("text") ;
for(int i=0;i<text.length;i++){
sorah_tv.setText(text[i]);
}
help me please
My guess is the loop is wrong instead of this:
for(int i=0;i==jsonArray.length();i++){
JSONObject aya=jsonArray.getJSONObject(i);
String text=aya.getString("text");
myText[i] =text;
}
Do this:
for(int i=0;i<jsonArray.length();i++){
JSONObject aya=jsonArray.getJSONObject(i);
String text=aya.getString("text");
myText[i] =text;
}
UPDATE:
I think you get error OutOfBoundException, because you have 7 objects in the JSON array, and myText
array is of size 6:
so instead of this:
final String[] myText=new String[6];
do this:
final String[] myText=new String[7];
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.