ここにjson配列データを返すグラフAPIはその詳細です
これらのjson配列をrecyclerViewに表示するタスクがあったので、json配列をarraylistに変換しようとしましたが、配列リストが0を返しました。ここで正しい解析に必要な変更の可能性がわかりません。詳細コードです。
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()
更新:これを試しましたが、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()
今のところ、try catchブロックを削除し、コードの数行を変更した結果、25のJSONArrayサイズを表示するToastメッセージが表示されましたが、ブロック内の各オブジェクトをフェッチするのに疲れて、「for」以外の値のToastを表示しましたブロックそれはまだnullを返しますここに私の新しいコード行があります。
// 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()
今のところ、私がしたことは、json配列の最初のオブジェクトを返すforループ内のToastメッセージを暗示しています
}
if (i==0) {
Toast.makeText(this, "" + insidata, Toast.LENGTH_LONG).show()
}
しかし、私がこれを暗示したとき
}
if (i==0) {
Toast.makeText(this, "" + mId, Toast.LENGTH_LONG).show()
私はそれがまだNULLを返している理由を理解していませんplzは私がそれから抜け出すのを助けます}
このコードを試してください
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));
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加