Есть ли класс для разбора JSON с сервера в SDK для iOS? (По аналогии с NSXML для XML и расширением RSS.)Поддержка родной JSON в iOS?
ответ
Начиная с iOS5 JSON поддерживается, не требуется сторонних фреймворков. Это поддерживается NSJSONSerialization Class!
Обновленный ответ для прошивкой 5: поддержка
JSON теперь родным для прошивкой с NSJSONSerialization
, но с точки зрения производительности, он бледнеет по сравнению к JSONKit
, как заявил Джон Englehart в JSONKit
README:
UPDATE: (2011/12/18) ориентиры ниже, были выполнены до яблок NSJSONSerialization было доступно (как в Mac OS X 10.7 и прошивкой 5). Очевидный вопрос: что быстрее, NSJSONSerialization или JSONKit? Согласно этому сайту, JSONKit работает быстрее, чем NSJSONSerialization. Некоторые быстрые вычисления «задней части конверта» с использованием указанных номеров, JSONKit, по-видимому, примерно на 25-40% быстрее, чем NSJSONSerialization, что довольно важно.
Вот блог, который углубляется в более конкретные критерии: JSON Libraries for iOS Comparison
Для тех, кто находит этот вопрос через Google или какой-либо другой аналогичный источник: ответ boz ниже заменяет это. Поддержка JSON теперь является родной для iOS. – Tommy
Для тех, кто надеется использовать JSONKit с вашим приложением, которое использует сборку мусора, основанной на подсчете ссылок на iOS, вам здесь не повезло (другими словами, документация JSONKit позволяет указать, что поведение JSONKit при использовании с Приложение ARC не определено). Но, если вы используете ARC, вы, вероятно, все равно не заботитесь о памяти и производительности :-) – umassthrower
@umassthrower Я уверен, что вы знаете флаг '-fno-objc-arc' ... –
Есть несколько JSON библиотек для iPhone, перечисленных в этой теме: https://stackoverflow.com/questions/286087/best-json-library-to-use-when-developing-an-iphone-application
Ссылка не действительна.Страница не найдена! – ioopl
NextiveJson является должен быть довольно быстрым для iOS JSON NextiveJson
Что касается JSONKit
тестов, на текущий момент и версии iOS это не так быстро. После создания тестового приложения для тестирования скорость NSJSONSerialization
работает быстрее, но не так быстро, как пользовательская реализация OKJSONParser
- 1. CouchBase WEB (AngularJS), Android (родной), IOS (родной)
- 2. iOS PDF родной поиск
- 3. Поддержка WebDAV в IOS
- 4. Поддержка JSON?
- 5. поддержка JSON в Internet Explorer 9
- 6. Json или родной POJO
- 7. Parse JSON в ActionScript 3 (родной JSON)
- 8. Поддержка объектных JSON-объектов в мобильных браузерах
- 9. iOS Универсальная поддержка ссылок в salesforce
- 10. Отключить родной iOS smart banner
- 11. iOS Локализация меняется, родной регион
- 12. Monotouch и родной код iOS
- 13. Поддержка Git в приложении iOS
- 14. Поддержка HTTPS в iOS XMPPFramework
- 15. Поддержка многоязыкового дизайна в IOS
- 16. Поддержка нескольких языков в ios
- 17. Alloy.Globals поддержка iOS в титане
- 18. Поддержка Docx в UIWebview (iOS)?
- 19. Реактивный родной симулятор iOS Сетевое подключение
- 20. Develop Реагировать родной IOS приложение
- 21. Поддержка iOS futex
- 22. iOS arm64 поддержка
- 23. Поддержка нескольких версий iOS
- 24. iOS: поддержка быстрого программирования?
- 25. Поддержка DropZonjs IOS
- 26. Поддержка iOS сторонняя навигация
- 27. Многоэкранная поддержка iOS 8+
- 28. iOS, поддержка дисплея сетчатки
- 29. Поддержка видео на iOS
- 30. поддержка Windows, родной GSS-API в Java 6
Вы бы посоветовали использовать родные классы или JSONKit - я слышал причины производительности для того, почему вы использовали бы неродные классы, и мне понравилась бы некоторая обратная связь – Doug
@Doug в соответствии с этим: http://www.bonto.ch/ blog/2011/12/08/json-libraries-for-ios-compare-updated/JSONKit работает быстрее, но если вы не работаете с огромным количеством JSON, я не думаю, что это будет иметь большое значение. – ThomasW
NSJSONSerialization имеет ошибку только в iOS 5 (я никогда не нашел ее в 6), и иногда выдает ошибку на отлично действующем JSON. Ошибка: Error Domain = NSCocoaErrorDomain Code = 3840 «Операция не может быть выполнена. (Ошибка Cocoa 3840.)» (Дублирующий ключ для объекта вокруг символа 126.) Я не знаю, что полностью вызывает ошибку, поскольку я могу Всегда воспроизводите его. – LightningStryk