2017-06-19 14 views
-6

私はこのJSONをKotlinに持っています。私は取得して解析することができません。どんなクイックヘルプ。お願いします。ここでKotlin Json Parser

[{platform: {name: "mena-web",publishingRegion: "mena",platformGroup:"web",id: 2,countryCode: "AE",locales: {locale:["en_US","ar_AE"]}}}] 

私のデータクラスです:ここ

data class Locales(var locale: ArrayList<String>) {} 

data class Platform(var name: String, var publishingRegion: String, var platformGroup: String, var id: Int, var countryCode: String, var locales: Locales) {} 

data class Json(var platform: Platform) {} 

は私のJSONのAPIインタフェースである:ここで

interface Api { 
    @GET("/me.json2") 
    fun getGeo(callback: Callback<List<Json>>): Call<List<Json>> 
} 

は私RestAPIです:ここでは

class RestAPI(val api: Api) { 

    fun getNews(callback: Callback<List<Json>>) { 
     val call = api.getGeo(callback) 
     call.enqueue(callback) 
    } 
} 

は私RestAPIです電話:

try { 
    val api: RestAPI 
    val retrofit = Retrofit.Builder() 
         .baseUrl(PLATEFORM_URL) 
         .addConverterFactory(MoshiConverterFactory.create()) 
         .build() 

    api = retrofit.create(RestApi::class.java) 
    val callback = object : Callback<List<Json>> { 

     override fun onResponse(call: Call<List<Json>>?, response: retrofit2.Response<List<Json>>?) { 
      response?.isSuccessful.let { 
       [email protected] = response?.body() 
      } 
     } 

     override fun onFailure(call: Call<List<Json>>?, t: Throwable?) { 
      Log.e("MainActivity", "Problems calling API", t) 
     } 

    } 

    api.getGeo(callback) 
// Log.e("Message", test.getNews().toList().toString()) 
} catch(e:Exception){ 
    Log.e("Message", e.message) 
} 
+3

される文字列のですか?可能であれば、スタックトレースを投稿してください。 –

+0

あなたはどのパーサーを使用していますか? –

+0

@ Miha_x64彼はMoshiを使用しています。最後のコードスニペットを参照してください: '.addConverterFactory(MoshiConverterFactory.create())' –

答えて

0

ありがとうございました! 答えを見つけました。パーサーを変更した後にすべてのstatが動作します。

MoshiConverterFactory to GsonConverterFactory。

0

responesは、あなたが取得しているエラーは何ですか、あなたのjsonResponse

try { 
val rootArray = JSONArray(respones) 
val mainObject=rootArray.getJSONObject(0) 
val platformObject=mainObject.getJSONObject("platform") 
val name=platformObject.getString("name") 
val publishingRegion=platformObject.getString("publishingRegion") 
val platformGroup=platformObject.getString("platformGroup") 
val id=platformObject.getInt("id") 
val countryCode=platformObject.getString("countryCode") 
val localesObj=platformObject.getJSONObject("locales") 
val localeArray=locales.getJSONArray("locale") 
val stringOne=localeArray.getString(0) 
val stringTwo=localeArray.getString(1) 
} catch (e: JSONException){}