android – 从改造响应中获取JSON数组

android – 从改造响应中获取JSON数组,第1张

概述我需要从Retrofit解析 JSON数组.我需要获得以下密钥: { "rc":0, "message":"success", "he":[ { "name":"\u05de\u05e4\u05e7\u05d7", "type":0 } ]} 我可以很容易地得到消息,但我无法从响应中得到“他”数组. 这是我的数据模型类 public cla 我需要从Retrofit解析 JSON数组.我需要获得以下密钥:
{  "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数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1136569.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存