繁体   English   中英

在翻新中解析Json响应

[英]parse Json response in retrofit

来自WebService的调用响应如下:

{
    "mobilenumber": "09999999999", 
    "service": "1" , 
    "id": "1"
}

如何将收到的Json解析为对象?

@Override
public void onResponse(Call<Login> call, Response<Login> response) {

    if (response.isSuccessful()) {

    } 
}

此代码为您提供了如何解析json的信息。

    @Override
    public void onResponse(Call<Login> call, Response<Login> response) {
     if (response.isSuccessful()) {
       JSONObject jsonobject = new JSONObject(yourresponse);
       String mobilenumber = jsonobject.getString("mobilenumber");
       String service = jsonobject.getString("service");
       String id = jsonobject.getString("id");
            } 

默认情况下,Retrofit只能将HTTP正文反序列化为OkHttp的ResponseBody类型。

一个使用Gson来往于JSON的序列化的Converter。 将创建一个默认的Gson实例,或者可以配置一个实例,并将其传递给GsonConverterFactory以进一步控制序列化。

添加到gradle;

compile 'com.squareup.retrofit2:converter-gson:latest.version'


Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.xxx.com")
    .addConverterFactory(GsonConverterFactory.create())
    .build();

假设您具有这样的Login模型:

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Login {

    @SerializedName("mobilenumber")
    @Expose
    private String mobilenumber;

    @SerializedName("service")
    @Expose
    private String service;

    @SerializedName("id")
    @Expose
    private String id;

    public String getMobilenumber() {
        return mobilenumber;
    }

    public void setMobilenumber(String mobilenumber) {
        this.mobilenumber = mobilenumber;
    }

    public String getService() {
        return service;
    }

    public void setService(String service) {
        this.service = service;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}

在改造onResponse()方法中:

@Override
public void onResponse(Call<Login> call, Response<Login> response) {

    if (response.isSuccessful()) {

        Login loginObject = response.body();

        String mobileNumber = loginObject.getMobilenumber();
        String service = loginObject.getService();
        String id = loginObject.getId();
    } 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM