2

我有一个 android 应用程序,其中解析一个 json 块大约需要 250 毫秒。它包含一个数组,我只需要立即可用的前 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 之类的,但我不确定性能会如何。

有没有任何非黑客的方式来做到这一点?

4

1 回答 1

4

万一有人用谷歌搜索这个:

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);
}
于 2013-03-29T11:30:47.653 回答