是否有使用GSON将org.json.JSONObject转换为POJO模型的有效方法? (目前你想做的事情
Gson g=new Gson();
g.fromJson(json.toString(), PersonModel.class);
json is JSONObject
)。
我正在使用volley并作为响应我得到了JSONObject的实例,我可以在http://www.kpbird.com/2013/05/volley-easy-fast-networking-for-android.html上解析,但我在嵌套列表等模型中有复杂的结构,我想避免从json手动提取数据。
答案 0 :(得分:0)
首先,抱歉碰到一个老问题。
我问自己同样的问题,并在Android开发者网站的Android Volley部分implementing custom requests中找到了这个示例。
@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));
}
// handle errors
...
}
我只是使用StringRequest并在响应回调上使用GSON,它应该比在调用GSON之前获取JSONObject并将其转换为String更快。对于我在JSONObject javadoc中看到的,无法从byte []创建实例,因此可能以字节为单位的HTTP响应转换为String,然后转换为JSONObject,然后再将其转换为String。通过使用StringRequest,我们可以跳过最后两个步骤。