1

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

4

1 回答 1

0

首先,很抱歉碰到一个老问题。

我问自己同样的问题,并在 Android Volley 部分找到了这个示例,称为在 Android 开发者网站中实现自定义请求。

@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,它应该比获取 JSONObject 并将其转换为 String 在调用 GSON 之前更快。对于我在 JSONObject javadoc 中看到的内容,无法从 byte[] 创建实例,因此可能以字节为单位的 HTTP 响应先转换为 String,然后再转换为 JSONObject,然后再将其转换为 String。通过使用 StringRequest,我们可以跳过最后两个步骤。

于 2014-10-17T11:05:14.507 回答