我有一个Android应用程序,解析json块需要大约250ms。它包含一个数组,我只需要立即获得前6-7个值。我真的需要加快获取这些数据。
我的数据结构基本上如下:
class Data {
List<Map> data = objectmapper_readvalue_data;
public HashMap getItem(int i) {
return data.get(i);
}
}
我真的希望用JsonParser做这样的事情: class Data { List data = new List(); JsonParser p;
public HashMap getItem(int i) {
while (data.length < i) {
data.append(p.parseOneBlockOfData());
}
return data.get(i);
}
}
在第一次渲染时只会解析前5-6个值,其他的我可以稍后处理。但是,我错过了“parseOneBlockOfData”函数。当然我可以使用StringBuilder缓冲解析中的每个值,直到找到下一个整个块,然后使用objectParser或者那个,但我不确定性能会是什么样。
有没有非hackish的方式这样做?
答案 0 :(得分:4)
任何人都可以使用google这个:
JsonParser parser = objectMapper.getFactory().createJsonParser(inputStream);
// Keep going until we find filters:
String fieldName = null;
JsonToken token = null;
while (!"filters".equals(fieldName)) {
token = parser.nextToken();
while (token != JsonToken.START_ARRAY) {
token = parser.nextToken();
}
fieldName = parser.getCurrentName();
}
// We're at the filters node
while (parser.nextToken() == JsonToken.START_OBJECT) {
Map x = objectMapper.readValue(parser, Map.class);
}