http://gabriel.github.com/yajl-objc/

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

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

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

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

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

Если это поможет, то строка 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 в памяти?

Ответы на вопрос(2)

Ваш ответ на вопрос