Qual é a maneira mais eficiente de converter uma resposta JSON de 10 MB em um NSDictionary?

Como nosso aplicativo deve exibir uma grande quantidade de dados com solicitações http remotas mínimas, adicionamos um ponto final ao back-end que fornece todos os dados necessários como uma única resposta json. Isso resulta em ~ 1,5 MB (compactado) ou aproximadamente 8 MBs de texto no formato json não compactado.

Não é um problema, ele é baixado em 10 a 30 segundos e estamos usando o ASIHTTPRequest para gravar toda a resposta no disco.

Agora vem a parte divertida - depois de ler o arquivo descompactado em uma string de memória mapeada, usamos stig'sjson-framework para convertê-lo em um NSDictionary. Isso funcionou muito bem para o restante do nosso aplicativo e a resposta json típica de 2 KB para o restante dos pontos de extremidade da API. No entanto, a desserialização desses 8 MBs de dados leva de alguns segundos (simulador) a minutos (3G e iPod Touch de segunda geração).

Estou pesquisando a melhor abordagem para ler todos esses dados.

Eu adoraria usar listas binárias fornecidas diretamente pelo back-end, mas estamos usando Java e não encontrei uma biblioteca adequada que atenda aos nossos requisitos, e com um prazo tão curto, escrever nossa própria pode não ser a melhor idéia.

Se ajudar de alguma forma, a string json que estamos analisando é principalmente uma matriz de itens X, assim:

{
    "items": [ { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" },
               { "key1": "value1", "key2": "value2" }
             ]
}

Qual é o método mais eficiente para ler essa string formatada em json de 8 MB em um NSDictionary na memória?