Страницы

Поиск по вопросам

вторник, 14 мая 2019 г.

Библиотека для работы с JSON для iOS

Нашел следующие библиотеки: SBJSON JSON kit Touch JSON (как я понял устарел и не поддерживается) хочется поинтересоваться что пользуется бОльшим успехом и какие особенности этих библиотек. И возможно какая лучше.


Ответ

Советую выбирать Вам между NSJSONSerialization и JSONKit. Про разницу между ними ничего особенного не скажу, обе библиотеки делают свое дело.
Что касается их производительности, то разница у них незначительная (JSONKit быстрее, но не намного) и к тому же редко когда вы столкнетесь с тем, что именно производительность разбора JSON будет для вас bottleneck. Смотрите на эту тему очень поучительный комментарий автора библиотеки RestKit.
Единственный довод за NSJSONSerialization - это отсутствие лишней зависимости от сторонней библиотеки (я имею в виду зависимость от JSONKit в случае, если вы выберете её), хотя, если вы пользуетесь Cocoa pods, этот довод становится совсем еле заметным.
Довод против NSJSONSerialization и в пользу JSONKit - это что JSONKit удобнее в использовании - я пользуюсь JSONKit главным образом из-за того, что она добавляет удобные категории к классам NSArray, NSDictionary, NSString. И вместо того, чтобы писать каждый раз заново строки NSJSONSerialization типа
NSJSONSerialization *yourResponse = [NSJSONSerialization JSONObjectWithData:yourData options:0 error:&jsonError]; NSArray *yourObjects = (NSArray *)yourResponse;
При использовании JSONKit Вам достаточно будет написать
NSArray *yourObjects = yourData.objectFromJSONData;
На мой взгляд это удобно и незаметно. Настолько незаметно, что я даже не сразу вспомнил какой JSON-библиотекой я пользуюсь, когда прочитал Ваш вопрос.
ОБНОВЛЕНО ПОЗЖЕ
Мой взгляд на этот вопрос изменился с тех пор, как я отвечал на него полтора месяца назад. Сейчас я бы советовал использовать исключительно родной NSJSONSerialization.
Вот несколько причин:
JSONKit, похоже, накрепко заброшен автором. Xcode 5 выдаёт очень много Warning'ов по поводу JSONKit, как он есть, и автор никак не реагирует на соответствующие репорты (если интересно, см. многочисленные issues вроде #121 в его репозитории на Github). Вот эти Тесты производительности на SO показывают, что NSJSONSerialization работает быстрее или как минимум наравне с JSONKit (начиная с iOS 6). Если вы используете для работы с сетью AFNetworking, то он за кулисами разбирает JSON с помощью NSJSONSerialization, и вам вообще не нужно думать о том, какой JSON парсер выбирать и использовать, так как за вас всё уже сделано и вы получаете готовые свои ответы уже завернутые из JSON в NSDictionary/NSArray.
Кратко: используйте NSJSONSerialization!

Комментариев нет:

Отправить комментарий