我想从JSON URL获取数据。它包含22个字段,它有6000行以上。我想解析这个JSON数据并将其存储在SQLite数据库中。
我知道JSON的基础知识,但是当我使用它时,我会得到一个"内存不足"错误。 经过大量的R& D和谷歌搜索后,我发现我必须使用GSON进行重URL,但我并不熟悉它。
我可以在JSON中实现分页吗?换句话说,我可以做一些事情,比如从JSON获取部分数据并将其存储到数据库中,然后请求某些数据并将其存储到数据库中,继续该过程直到解析完整的JSON文件?
答案 0 :(得分:0)
您必须在服务器端(为您提供JSON数据的那个)实现分页机制,并将范围参数作为您提到的URL的一部分传递。
答案 1 :(得分:0)
如果我知道我会有很多行/数据,那么我会运行一些简单的SQL调用来确定数据的大小。然后在Android中分解原始JSON以处理较小块中的数据,在每个段之后提交。所以在你的例子中,你知道你有6000多行 - 在Android中作为int存储在内存中,然后一次调用1000行。
进一步查询后的一些代码:
String locationCountPath = "http://mywebserver/countAllMD5UserLocations";
try {
//My method to return a count of locations
int locCount = MyJSONUtilities.countAllUsersLocations(
locationCountPath, MyJSONUtilities.writeUserDetailsJSON(
username.toUpperCase(), password));
// Compare new count with count on phone
if (countLocs != locCount && locCount > 0) {
try {
// Grab the new set of locations
askToSyncLocations();
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
那么,如果你用自己的方式在一个循环中处理6000+行的方式替换askToSyncLocations()方法,一次批量处理1000个,它应该不会遇到任何内存问题?