服务器可以回答如下:
{ "data1":"value", "data2":"value" }
或:
{ "error":"text" }
或:
{ "json":"{ "error":"text" }" }
如何使用改造从服务器解析各种答案 也许我应该做一个富有的POJO:
class MyAnswer {
String data1;
String data2;
String error;
// etc
}
答案 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。