
{ "rc":0,"message":"success","he":[ { "name":"\u05de\u05e4\u05e7\u05d7","type":0 } ]} 我可以很容易地得到消息,但我无法从响应中得到“他”数组.
这是我的数据模型类
public class GetRoleData implements Serializable { @Serializedname("he") private ArrayList<Roles> he; @Serializedname("message") private String message; public GetRoleData() { this.he = new ArrayList<>(); this.message = ""; } public ArrayList<Roles> getUserRoles() { return he; } public String getMessage() { return message; } public class Roles { public Roles() { name = ""; type = -1; } @Serializedname("name") private String name; @Serializedname("type") private int type; public int getType() { return type; } public String getname() { return name; } }} 这就是我向服务器发送请求的方式:
@POST("index.PHP/")Call<GetRoleData> getUserRoles(@Body SetParams body); 这是我如何发送请求和处理响应
APIService APIService = retrofit.create(APIService.class); Call<GetRoleData > APICall = APIService.getUserRoles(params); APICall.enqueue(new Callback<GetRoleData >() { @OverrIDe public voID onResponse(retrofit.Response<GetRoleData > mUserProfileData,Retrofit retrofit) { Log.e("locale info","mUserProfileData = " + mUserProfileData.body().toString()); if (pDialog != null) { pDialog.dismiss(); } if (mUserProfileData.body().getMessage().equals("success")) { Log.e("locale info","user roles = " + mUserProfileData.body().getUserRoles().size()); } else { Toast.makeText(Registeractivity.this,getResources().getString(R.string.get_role_error),Toast.LENGTH_SHORT).show(); } } @OverrIDe public voID onFailure(Throwable t) { if (pDialog != null) { pDialog.dismiss(); } t.printstacktrace(); } }); 我想要的是
我需要从上面的响应中获取“he”数组.请帮忙谢谢.
这是我得到的回应..
解决方法 更新改造2.0-beta2:dependencIEs { compile filetree(dir: 'libs',include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.androID.support:appcompat-v7:23.1.1' compile 'com.Google.code.gson:gson:2.4' compile 'com.squareup.okhttp:okhttp:2.5.0' // compile 'com.squareup.retrofit:retrofit:1.9.0' compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'} 接口:
@GET("/API/values")Call<GetRoleData> getUserRoles(); MainActivity的onCreate:
// Retrofit 2.0-beta2 Retrofit retrofit = new Retrofit.Builder() .baseUrl(API_URL_BASE) .addConverterFactory(GsonConverterFactory.create()) .build(); WebAPIService service = retrofit.create(WebAPIService.class); // Asynchronous Call in Retrofit 2.0-beta2 Call<GetRoleData> call = service.getUserRoles(); call.enqueue(new Callback<GetRoleData>() { @OverrIDe public voID onResponse(Response<GetRoleData> response,Retrofit retrofit) { ArrayList<GetRoleData.Roles> arrayList = response.body().getUserRoles(); if (arrayList != null) { Log.i(LOG_TAG,arrayList.get(0).getname()); } } @OverrIDe public voID onFailure(Throwable t) { Log.e(LOG_TAG,t.toString()); } }); 改造1.9
我使用你的GetRoleData类
界面:
public interface WebAPIService { @GET("/API/values") voID getUserRoles(Callback<GetRoleData> callback); } 主要活动:
@OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); // creating a RestAdapter using the custom clIEnt RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(API_URL_BASE) .setLogLevel(RestAdapter.LogLevel.FulL) .setClIEnt(new OkClIEnt(mOkhttpClIEnt)) .build(); WebAPIService webAPIService = restAdapter.create(WebAPIService.class); Callback<GetRoleData> callback = new Callback<GetRoleData>() { @OverrIDe public voID success(GetRoleData getRoleData,Response response) { String bodyString = new String(((TypedByteArray) response.getbody()).getBytes()); Log.i(LOG_TAG,bodyString); } @OverrIDe public voID failure(RetrofitError error) { String errorString = error.toString(); Log.e(LOG_TAG,errorString); } }; webAPIService.getUserRoles(callback); } 屏幕截图如下:
总结以上是内存溢出为你收集整理的android – 从改造响应中获取JSON数组全部内容,希望文章能够帮你解决android – 从改造响应中获取JSON数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)