2017-09-30 11 views
-2

私はkotlinアプリでJSONファイルを読み込もうとしています。私はjsonを読むことができますが、エラーがあります、それは配列を埋めるものではありません。例外が表示されたら、私はjsonの結果を見ることができます。ここでは、コードは次のとおりです。kotlinアプリのjson例外

fun read(){ 
    val stringRequest = StringRequest(Request.Method.POST, URL, Response.Listener<String>{s -> 
     try { 
      val obj = JSONObject(s) 
      if(!obj.getBoolean("error")){ 
       val array = obj.getJSONArray("friend") 

       for(i in 0..array.length()-1){ 
        val objectFriend = array.getJSONObject(i) 
        val friend = Friend(objectFriend.getString("name"), objectFriend.getString("surname")) 

        listaPersonas.add(friend) 

       } 
      } 
     }catch (e: JSONException){ 
      e.printStackTrace() 
     } 
    },Response.ErrorListener { error: VolleyError? -> Log.e("error", "error") }) 

    val requesQueue = Volley.newRequestQueue(this) 
    requesQueue.add<String>(stringRequest) 


} 

は、これは例外である:

org.json.JSONException: Value [value of json] of type org.json.JSONArray cannot be converted to JSONObject 
09-30 22:25:06.241 17310-17310/com.example.user.kotlinjson W/System.err:  at org.json.JSON.typeMismatch(JSON.java:111) 
09-30 22:25:06.242 17310-17310/com.example.user.kotlinjson W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:160) 
09-30 22:25:06.242 17310-17310/com.example.user.kotlinjson W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:173) 
09-30 22:25:06.242 17310-17310/com.example.user.kotlinjson W/System.err:  at com.example.smoreno.kotlinprueba.MainActivity$read$stringRequest$1.onResponse(MainActivity.kt:139) 
09-30 22:25:06.242 17310-17310/com.example.smoreno.kotlinprueba W/System.err:  at com.example.smoreno.kotlinprueba.MainActivity$read$stringRequest$1.onResponse(MainActivity.kt:22) 
09-30 22:25:06.242 17310-17310/com.example.smoreno.kotlinprueba W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60) 
09-30 22:25:06.242 17310-17310/com.example.smoreno.kotlinprueba W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
+1

val obj = JSONObject(s) 

置き換えますか?それを見ることはできません。 –

+0

申し訳ありません、今投稿されました – zasaz

答えて

0

可能性あなたが空またはnull値を持つレスポンスとしてJsonArrayを取得し、あなたがJsonObjectとしてキャストしようとしているがあります。以下のコードを試してみてください。

は例外だ

if(s != null && s.isNotEmpty()) { 
val obj = JSONArray(s) 
// rest of code here 
}