我正在学习Volley库,特别是我正在处理JSONObject
个请求。在几个教程中,我可以找到这样的例子:
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// ...
}
}
, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// ...
}
});
但现在我想知道是否有办法将自定义类绑定到请求对象或结果对象。
我的意思是:我想将键值结果映射到我的应用域中的一些强类型自定义对象。这是可能的还是我应该自己实现这个功能?
答案 0 :(得分:0)
我想这会对你有帮助。
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Method.POST,url,your_json_object,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// On Success
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// On Failure
}
});
MyApplication.getInstance().addToRequestQueue(jsObjRequest, tag);
通过你的your_json_object
代替我的。{/ p>
完成强>
答案 1 :(得分:0)
您可以像这样使用Gson库: https://gist.github.com/ficusk/5474673
答案 2 :(得分:0)
假设你的目标是获取一个Name对象,其中Name被定义为
public class Name{
private String firstName;
private String middleName;
private String lastName;
//constructor, getter, setter
}
然后您可以使用Gson将JSONObject转换为Name
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Gson gson = new Gson();
Name name = gson.fromJson(response.toString(),Name.class);
//use Name.
}
}
, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// ...
}
});
@Lissf的答案是避免样板的好方法。
但是,我建议您查看Retrofit,这可以将其减少到一行:
@GET ("/name")
getName(Callback<Name> nameCallback);
您可能还想查看RxAndroid。