2

Graph api returning json array data here is it's detail image contains the  list of json array

I had a Task to display these json array to my recyclerView so i tried to convert json array to a arraylist but my array List Returning 0 . i am not getting what probable changes needed for the correct parsing here is my detail code

                GraphRequest(
                AccessToken.getCurrentAccessToken(), "/me/posts", null,HttpMethod.GET,
                GraphRequest.Callback { response ->
                    Log.e(TAG, response.toString())

                    try {


                        var json: JSONObject = response.jsonObject
                        var jarray: JSONArray = json.getJSONArray("data")

                            mArrayList = ArrayList()



                            for (i in 0 until jarray.length()) {

                               // mArrayList = ArrayList()
                                var mdataa: JSONObject = jarray.getJSONObject(i)

                                if (mdataa == null) {
                                    Toast.makeText(this, " Nothing here", Toast.LENGTH_SHORT).show()
                                }
                                // this part don't have any mistake


                                mMessage = mdataa.getString("message")
                                mId = mdataa.getString("id")
                                mCreatedTime = mdataa.getString("created_time")
                                this.mArrayList?.add(Data(mMessage, mId, mCreatedTime))

                            }




                    } catch (e: JSONException) {

                        e.printStackTrace()
                    }
                    Toast.makeText(this,"total number of values in arraylist" + mArrayList?.size ,Toast.LENGTH_LONG).show() // this toast returning 0 value



                    if (mArrayList == null) {
                        Toast.makeText(this, "U GET Nothing here", Toast.LENGTH_SHORT).show()
                    } else {


                        var main: Intent = Intent(this@Display, DisplayingPost::class.java)

                        main.putParcelableArrayListExtra("data", mArrayList)
                        startActivity(main)


                    }
                }

        ).executeAsync()

updated: i tried this still it's returning null try {

                        var jsonResponse:JSONObject= JSONObject(response.toString())
                        var jsonArray:JSONArray=jsonResponse.getJSONArray("data")

                        for (i in 0 until jsonArray.length())
                        {
                            var insidata:JSONObject=jsonArray.getJSONObject(i)
                            var mMessage:String=insidata.getString("message")
                            allMessage?.add(mMessage)
                            var mId:String=insidata.getString("id")
                            allId?.add(mId)
                            var dateofCreation:String=insidata.getString("created_time")
                            allCreatedDate?.add("dateofCreation")

                        }


                    }

                    catch (e: JSONException)
                    {
                        e.printStackTrace()
                    }
                    Toast.makeText(this,"Size here is"+ allId?.size ,Toast.LENGTH_LONG).show()

                }

        ).executeAsync() 

For Now I removed try catch block and changed few line of code which resulted in a Toast message that was Displaying my JSONArray size which was 25 but when i tired to fetch each object inside for block and displayed a Toast for value Outside of "for" block it is Still Returning null here is my new line of code .

                           //  try {


                        var jsonResponse:JSONObject=  response.getJSONObject()
                    // JSONObject(response.toString())
                        var jsonArray:JSONArray=jsonResponse.getJSONArray("data")
                  //  Toast.makeText(this,"Size here is"+ jsonArray.length() ,Toast.LENGTH_LONG).show()

                        for (i in 0 until jsonArray.length())
                        {
                            var insidata:JSONObject=jsonArray.getJSONObject(i)
                            if (insidata.has("message")) {
                                var mMessage: String? = insidata.getString("message")
                                allMessage?.add(mMessage as String)
                            }

                            var mId:String=insidata.getString("id")
                            allId?.add(mId)
                            var dateOfCreation:String=insidata.getString("created_time")
                            allCreatedDate?.add(dateOfCreation)

                        }


                  //  }

                 //   catch (e: JSONException)
                  //  {
                    //    e.printStackTrace()
                   // }
                    Toast.makeText(this,"Size here is"+ allMessage?.size ,Toast.LENGTH_LONG).show()

                }

        ).executeAsync()

for now what i did i implimented a Toast message inside my for loop which returning the 1st Object of json Array

               }
                            if (i==0) {
                                Toast.makeText(this, "" + insidata, Toast.LENGTH_LONG).show()
                            }

but when i implimented this

          }
                            if (i==0) {
                                Toast.makeText(this, "" + mId, Toast.LENGTH_LONG).show()

i don't undERsTAND WHY IT IS Still RETURNING NULL plz help me get out of it }

2
  • 1
    do you have 2 mArrayList variable in whole class?? Commented Aug 4, 2018 at 5:28
  • Yeah I declared it globaly Commented Aug 4, 2018 at 11:34

1 Answer 1

1

Try this code

ArrayList<String> listdata = new ArrayList<String>();     
JSONArray jArray = (JSONArray)jsonObject; 
if (jArray != null) { 
   for (int i=0;i<jArray.length();i++){ 
    listdata.add(jArray.getString(i));
   } 
} 
Sign up to request clarification or add additional context in comments.

2 Comments

updated my question by applying ur suggested code still it's returning null
{Response: responseCode: 200, graphObject: {"data":[{"created_time":"2018-06-27T14:26:31+0000","id":"1742085185888234_1693593180737435"} from response it's very much clear my graph request returning values.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.