レトロフィットコール:異なるJSON構造を扱うためにどのようなテクニックを使用しますか?
@GET("getUser")
Call<Map<Object,Object>> getUser(@Query("phoneNumber") String phoneNumber, @Query("hash") String hash)
リターンUserオブジェクトならば、私は、ブラウザからのJSON resutが必要になります。
{"error":"-1"}
コールバック応答:ブラウザから
{"error":"0","value":[{"id":1,"name":"","phoneNumber":"87472335578","smsCode":497797,"smsCodeDate":1475160867,"hash":"76dcc911e14f997189243f3370080e62","roles":[{"id":2,"name":"ROLE_USER"}]}]}
とJSONのresutリターンエラーならば、 android
Map<Object,Object>
を使用して、異なるJSON構造を処理しました。しかし問題は数字のキャストにあります。私はintまたはlongが必要ですが、javaはdouble値として見ています。私はいくつかの解析メソッドを使用することができます。しかし、Mapに多くの変数がある場合、それは恐ろしい作業になります。
私はMap<String,String>
を使用することはできませんし、Gsonはそれを処理したくないので、解析することはできません。バックスラッシュがあります。もちろん、それを削除することは明らかですが、私はJSONを扱うためのエレガントな方法を探したいと思います。
{"error":"0","value":[{\"id\":\"1\",\"name\":\"\",\"phoneNumber\":\"87472335578\",\"smsCode\":497797,\"smsCodeDate\":1475160867,\"hash\":\"76dcc911e14f997189243f3370080e62\",\"roles\":[{\"id":2,\"name\":\"ROLE_USER\"}]}]}
チェックこのチュートリアルhttp://wiki.workassis.com/android-retrofit-2-1-http-client/ –