Какой самый эффективный способ преобразования ответа JSON размером 10 МБ в NSDictionary?

Наше приложение должно отображать большой кусок данных с минимальным количеством удаленных HTTP-запросов, поэтому мы добавили конечную точку к нашему бэкэнду, которая предоставляет все необходимые данные в виде одного ответа json. Это дает ~ 1. 5 МБ (сжатый) или примерно 8 МБ несжатого текста в формате json.

Не представляет большой проблемы, он загружается за 10–30 секунд, и мы используем ASIHTTPRequest для записи всего ответа на диск.

Теперь идет самое интересное - после считывания несжатого файла в строку с отображением в память мы используем json-framework stig , чтобы преобразовать его в NSDictionary. Это очень хорошо сработало для остальной части нашего приложения и типичного ответа json размером 2 КБ для остальных конечных точек нашего API. Однако десериализация этих 8 МБ данных занимает от пары секунд (симулятор) до минут (3G и iPod Touch 2-го поколения).

Я ищу лучший способ чтения всех этих данных.

Я бы хотел люблю использовать бинарные списки, обслуживаемые прямо из серверной части, но мы используем Java, а я не t нашел подходящую библиотеку, которая соответствует нашим требованиям, и с такими жесткими сроками написание нашей собственной может быть не лучшей идеей.

Если это хоть как-то помогает, то строка json, которую мы анализируем, в основном представляет собой массив из X элементов , например, так:

{
    "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" }
             ]
}

Каков наиболее эффективный метод чтения этой строки в формате json размером 8 МБ в словарь NSDictionary в памяти?

6
задан Héctor Ramos 4 December 2010 в 19:15
поделиться