【发布时间】:2015-08-31 10:28:56
【问题描述】:
这是我的第一个问题,希望我没有弄错..
我从 'onSuccess()' 的返回值中得到了一个讨厌的长 json 数组,格式如下:
[
{
"label1":"value1",
"label2":"value2",
"label3":"value3",
....
},
{
"label1":"value1",
"label2":"value2",
"label3":"value3",
....
},
....
]
当我尝试将其转换为字符串并使用杰克逊常用的“映射器”对其进行解析时,我得到了可怕的内存不足异常。这让我觉得我需要流式传输这个大 json。
我去了jackson提供的here的例子,但是这个例子似乎对我帮助不大
我想知道我是否无法搜索,或者我只是一个编程方面的笨蛋,但如果有人能指导我举一个很好的例子,那将是非常高兴的。
我目前的努力:
client.get(
get_all_item_url,
new JsonHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseBody, Throwable e) {
....
}
@Override
public void onSuccess(JSONArray response) {
ObjectMapper mapper = new ObjectMapper();
ProductModel[] productModels = null;
try {
productModels = mapper.readValue(response.toString(),TypeFactory.defaultInstance().constructArrayType(ProductModel.class));
} catch (IOException e) {
e.printStackTrace();
}
....
}
});
【问题讨论】:
-
您是否尝试在本地保存 JSON 只是为了看看它有多大?
-
2MB。大约值 3000 条记录...
-
如果您设计了它,请先尝试减少该响应
-
恐怕我不能减少响应,因为那是另一个人设计的。
-
您可以使用哪些参数呢?返回 2 MB 的 json 没有意义……但如果您没有其他方法,请考虑将“响应流”保存到文件中,然后处理该文件。
标签: java android json jackson loopj