在改造中解析Json的反应

时间:2017-07-21 07:23:32

标签: android retrofit

来自WebService的调用响应如下:

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

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

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

    if (response.isSuccessful()) {

    } 
}

3 个答案:

答案 0 :(得分:0)

此代码为您提供了如何解析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");
            } 

答案 1 :(得分:0)

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

使用Gson与JSON进行序列化的转换器。将创建一个默认的Gson实例,或者可以配置一个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();

答案 2 :(得分:0)

假设您有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();
    } 
}