【发布时间】:2015-09-07 09:00:36
【问题描述】:
我预期的 Json 响应
{
"first_name": "Rajesh",
"contacts": [
{
"id": "c200",
"name": "rajesh",
"email": "ravi@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender": "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
{
"id": "c201",
"name": "ravi",
"email": "ravi_depp@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender": "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
}
]
}
GsonRequest 类发出请求并获得响应
public class GsonRequest<T> extends Request<T> {
private final Gson gson = new Gson();
private final Class<T> clazz;
private final Map<String, String> headers;
private final Listener<T> listener;
public GsonRequest(String url, Class<T> clazz, Map<String, String> headers,
Listener<T> listener, ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.clazz = clazz;
this.headers = headers;
this.listener = listener;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return headers != null ? headers : super.getHeaders();
}
@Override
protected void deliverResponse(T response) {
listener.onResponse(response);
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(gson.fromJson(json, clazz),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
}
我的问题是如何编写可以通过 GsonRequest 类并获得响应的类 我尝试http://www.jsonschema2pojo.org/ 为我的 json 响应生成类
现在我提出如下要求
GsonRequest<MyClass> gsonRequest = new GsonRequest<MyClass>(url,MyClass.class, null,createMyReqSuccessListener(), createMyReqErrorListener());
我的响应监听函数
private Response.Listener<MyClass> createMyReqSuccessListener() {
return new Response.Listener<MyClass>()
{
@Override
public void onResponse(MyClass response) {
txtView.setText("success" + response.first_name);
}
};
}
json 响应类
public class MyClass {
public String first_name;
public List<Contact> contacts;
public class Contact {
public String id;
public String name;
public String email;
public String address;
public String gender;
public Phone phone;
}
public class Phone {
public String mobile;
public String home;
public String office;
}
}
【问题讨论】:
-
请告诉我们你如何提出请求和错误日志
-
请检查已编辑的问题
-
在“createMyReqSuccessListener()”中得到空响应。请检查功能的编辑问题
-
@Yazazzello 感谢您的快速回复,ed 的课程解决了我的问题
-
实际上我已经检查过:两个 json 类都运行良好。
标签: android json gson android-volley