如何从服务器和Retrofit解析各种答案

时间:2016-03-26 11:50:31

标签: rest retrofit2

服务器可以回答如下:

{ "data1":"value", "data2":"value" } 

或:

{ "error":"text" } 

或:

{ "json":"{ "error":"text" }" }

如何使用改造从服务器解析各种答案 也许我应该做一个富有的POJO:

class MyAnswer {
   String data1;
   String data2;
   String error;
   // etc
}

1 个答案:

答案 0 :(得分:0)

我建议您使用Google's Gson library将Json字符串序列化/反序列化为POJO并反序列化。 Retrofit2也支持Gson作为转换器。

compile 'com.squareup.retrofit2:converter-gson'添加到build.gradle并创建如下所示的Retrofit实例:

Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .client(client)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

定义Java类并使用Gson的SerializedName标记对其进行注释。

public class MyAnswer {
    @SerializedName("data1")
    public String data1;

    @SerializedName("data2")
    public String data2;

    @SerializedName("error")
    public String error;
}

然后你可以在onResponse方法上获得你的POJO:

@Override
public void onResponse(Call<ExampleClass> call, Response<ExampleClass> response) {
    ExampleClass exampleClass = response.body();
    ......
}

您也可以从Json反序列化自己:

Gson gson = new GsonBuilder().create();
ExampleClass ec = gson.fromJson(jsonString, ExampleClass.class);

或序列化为Json:

ExampleClass ec = new ExampleClass();
ec.data1 = "Some text";
ec.data2 = "Another text";

Gson gson = new GsonBuilder().create();
String jsonString = gson.toJson(ec);

您还可以使用Gson创建嵌套/复杂结构。 有关详细信息,请访问their user guide