有没有有效的方法使用GSON将org.json.JSONObject转换为POJO模型?

时间:2013-09-03 20:07:59

标签: java android json gson

是否有使用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手动提取数据。

1 个答案:

答案 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,我们可以跳过最后两个步骤。