Сравнение JSON Parser для Objective-C (JSON Framework, YAJL, TouchJSON и т. Д.)

147

Насколько я знаю, есть три JSON Parsers для Objective-C, JSON Framework, YAJL и Touch JSON. Тогда эти три будут иметь свои особенности.

Например:
YAJL можно использовать как парсер SAX. JSON Framework имеет относительно долгую историю и широко используется.
Нажмите JSON, чтобы проанализировать NSData вместо NSString.

Кроме того, насколько я проверял, результат сравнения производительности выглядит следующим образом:
[fast] YAJL > JSON Framework > Нажмите JSON [slow].

Если вы знаете плюсы и минусы этих парсеров JSON, не могли бы вы мне сказать?
Наконец, если вы знаете какой-либо другой JSON Parser, скажите, пожалуйста.

  • 1
    Мой голос вверх! Это большой вопрос. Хотелось бы, чтобы некоторые эксперты ответили на этот вопрос. Я использую JSON Framework все время, но я хочу узнать плюсы и минусы других парсеров.
  • 0
    Спасибо Чинтан. Я также использую JSON Framework и не жалуюсь. Но я надеюсь, что кто-то может дать нам хороший ответ.
Показать ещё 4 комментария
Теги:
iphone

7 ответов

57
Лучший ответ

Если вы ищете скорость, посмотрите JSONKit. Он (обычно) намного быстрее, чем уже упоминавшиеся библиотеки JSON, часто на порядок быстрее. И из-за этого "недавно созданный экземпляр объекта" он будет (опять же, обычно) использовать меньше памяти.

  • 2
    Я могу это подтвердить :) В моих тестах JSONKit был почти в два раза быстрее, чем YAJL, и на 50% быстрее, чем JSON Framework, но, очевидно, данные, которые я использовал для теста, были своего рода худшим сценарием для JSONKit.
  • 2
    Второе что. Не забудьте установить флаг NS_BLOCK_ASSERTIONS в ваших сборках Release. Это еще больше улучшает скорость.
Показать ещё 8 комментариев
12

Учитывая сравнение, которое я сделал, самой быстрой библиотекой является JSONKit, за которой следуют NSJSONSerialization (теперь открытый API) и NextiveJSON. SBJSON и TouchJSON немного медленнее, чем предыдущие 3 библиотеки.

Сравнение было выполнено с использованием iPhone 4S с iOS 5.0.1.

  • 1
    Голосуйте за упоминание того, что NSJSONSerialization является частью публичного API! Я буду придерживаться этого, потому что не будет никаких проблем с обслуживанием.
  • 0
    то же самое. NSJSONSerialization , для меня, является разумным путем - по крайней мере, для нацеливания на iOS 5.0 и выше.
Показать ещё 1 комментарий
5

Там также этот парсер:

Я не помню, как я наткнулся на этот, но он выглядел легким и простым, поэтому я подумал, что это соответствует моим потребностям. Событие я разветкило его, чтобы добавить инициализацию из NSData. Поскольку мне нужно было разбирать небольшие ответы, я не заботился о производительности. Было бы интересно узнать, как это работает.

  • 0
    Это самый легкий и простой анализатор JSON, который я когда-либо использовал, настоятельно рекомендуется.
  • 0
    Вау, сделал мой день. Такой простой и элегантный парсер!
3

Я думаю, что JSONKit быстрее, чем YAJL, и YAJL быстрее, чем класс класса JSON и IOS5. Класс NSJSONSerialization намного быстрее. NSJSONSerialization не нужно использовать сторонние API.

2

Посмотрите этот пост. < 30 символов >

  • 2
    Более того, смотрите обновленную версию здесь psionides.jogger.pl/2010/12/12/… (спойлер: JSONKit выигрывает).
  • 2
    Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
0

Если вы ищете сериализатор из NSObject для JSON и наоборот, вы можете проверить OBJC JSONSerializer

0

Почему бы не взглянуть на тесты akosma на парсерах, где он сравнивает разные виды парсеров. Если один парсер отсутствует, вы можете также добавить его в тесты, так как его код является открытым исходным кодом.

iPhoneWebServicesClient

Ещё вопросы

Сообщество Overcoder
Наверх
Меню