请教一个 retorfit 与 json 解析的问题

2016-07-26 12:24:44 +08:00
 z42514
后台传回的是一个统一结构,
{
"data": "这里是主体内容",
"code": 200,
"msg": "OK"
}。
目前用的是 fastjson 作为解析工具,
因为返回结构都是统一的,
所以请问怎么样才能在返回 response 的时候统一做个处理,剥离出 code 与 msg ,直接留下 data 里面的主体内容呢。

希望大家可以指点一下,谢谢
9836 次点击
所在节点    Android
7 条回复
Zxw
2016-07-26 12:58:56 +08:00
写一个 BaseResullt ,处理 code 和 msg ,所有 api 返回结果继承 BaseResult , data 设置为你的 model 对象
kitalphaj
2016-07-26 13:03:35 +08:00
1 楼的方法挺好的。还有一种是可以写个 Intercepter 。然后用 okclient 的 addIntercepter 方法插入请求中。这个 intercepter 可以负责重新打包。但我觉得 1 楼的方法性能会好一点。
reHuo
2016-07-26 13:48:11 +08:00
1 楼的方法不错
twocity
2016-07-26 14:35:04 +08:00
ApiResult<T>
yuyang041060120
2016-07-26 14:40:40 +08:00
public class Backend<T> {
private int code;
private List<T> data;
private String msg;

public int getCode() {
return code;
}

public void setCode(int code) {
this.code = code;
}

public List<T> getData() {
return data;
}

public void setData(List<T> data) {
this.data = data;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}
}

public interface HttpService {
@GET("companies")
Call<Backend<Company>> getCompanies();

@GET("schedules")
Call<Backend<Schedule>> getSchedules();
}

public class HttpClient {
private static HttpService httpService = new Retrofit.Builder()
.baseUrl("http://192.168.1.24:8088/api/")
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(HttpService.class);


public static List<Company> getCompanies() {
try {
return httpService.getCompanies().execute().body().getData();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}

public static List<Schedule> getSchedules() {
try {
return httpService.getSchedules().execute().body().getData();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
yuyang041060120
2016-07-26 14:48:13 +08:00
z42514
2016-07-26 16:22:05 +08:00
@yuyang041060120 ,@Zxw
已经实现了,十分感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/294993

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX