Как стать автором
Обновить

Комментарии 32

Хорошая и полезная статья.
Очень актуально, тем более JSON набирает популярность.
Недавно выбирал чем парсить JSON под проект с Qt, тоже выбрал QJson.
А разве есть разумные альтернативы? (ну кроме как написать свой парсер)
Есть. Например, qt-json: github.com/ereilin/qt-json
Делает то же самое — преобразует JSON в QVariantMap и обратно, но при этом код намного чище (всего два файла: .h и .cpp), и никакой дополнительной сборки не требуется (можно просто включить файлы в свой проект, лицензия BSD).
Активно юзаем в нескольких проектах — нареканий никаких.
А умеет QObject в Json и обратно?
Напрямую нет, но решение тривиально — зарегистрировать свой класс в QMetaType, после чего он будет без проблем конвертиться в QVariant и обратно, который, в свою очередь, можно конвертить в JSON.
Там другое имелось в виду, но сериализация десериализация пишется на раз два три.
Выбрал бы его с удовольствием но там где он мне нужен его лицензия GPL не подойдет. А вот у QJson LGPL что уже намного лучше.
boost::property_tree :-)
Спасибо за обзор, хорошая либа. Я её юзал когда надо было общаться с сервером через API, выдающий json, и допиливать который для выдачи xml никто не собирался. Выручила =)
Спасибо за заметку.
Юзаем маленький k8json, который в принципе пошустрее и умеет скипать записи вместо полного парсинга, что сильно скорость поиска увеличивает по массивам. А вообще в Qt5 есть встроенная поддержка json'а, видел, что народ просто этот модуль целиком выдирал и юзал с Qt4!
А вообще в Qt5 есть встроенная поддержка json'а, видел, что народ просто этот модуль целиком выдирал и юзал с Qt4!


Вы про qjsondb?
Спасибо. Теперь буду знать как называется. Сейчас опробую на новеньком Qt5.
Вот и я думаю, что лучше это юзать по возможности, а не юзать лисапеды, которые скоро вымрут как класс.
Ну, полный переезд на Qt5 состоится не совсем скоро, ещё живы даже Qt3-проекты. И не все старые системы Qt5 будет поддерживать, к сожалению. Так что лисапеды живы и будут жить, как ни крути =)
Я в дикой природе живых Qt3 проектов не видел, всякие МСВС не в счет, это нишевые. Старый embedded, где Qt5 не взлетит тоже в общем-то уже прошлое.
Да и лучше тогда этот QJsonDocument на Qt4 накатить, чтобы потом проще было на Qt5 переезжать
Ну, насчёт последнего пункта согласен =)
А вот активные троечные проекты видел, и даже собирал. Правда, поробуй теперь вспомнить их названия, года два назад это было.
Меня больше волнует Qt3Support, которого немало еще осталось.
А что, нишевые проекты — не проекты? У нас есть в дикой природе нишевой проект на Qt3, но уже в состоянии долгоиграющей поддержки. Новая версия на Qt4 уже сделана, но там случилась такая революция по всем фронтам, что отмашку на развёртывание дадут ещё очень не скоро.

Кстати, а есть порт QJsonDocument для Qt4 в качестве отдельной библиотеки? Или оно просто без бубна взлетает?
Может быть «сериализация»?
«Сиреализация QObject» это да, самая цепляющая часть статьи.
Реализация на Си → Сиреализация :)
Кстати если нужно только парсить (не строить) несложный JSON, то проще использовать QtScript для разбора — не надо ковыряться с поддержкой сторонней библиотеки.
На самом деле, QJson простая как болт и очень быстро прикручивается (и есть в репозиториях большинства Linux-дистрибутивов). Можно, конечно, и через QtScript, но более громоздко и топорно :)

Строить JSON тоже можно — классический JSON2.js под QtScript прекрасно работает и уже несколько лет живёт у нас в одном из проектов.
Да я не спорю, просто иногда бывает такой проект, в котором подключение любой(!) сторонней библиотеки это недели бюрократических согласований. И при этом задачи возложенные на JSON парсер настолько минимальны что возится с библиотекой и самое главное бюрократией не имеет смысла.
Это где такой маразм? Да и что мешает просто пару файлов в проект воткнуть если они под BSD?
Поверь, всякий маразм бывает. Некоторым даже запрещают использовать весь opensource кроме «сертифицированного в ФСБ».
НЛО прилетело и опубликовало эту надпись здесь
Заметка хорошая, но зачем столько орфографических ошибок?
Добавлю свои пять копеек.

У меня под Win 7 с Qt 4.8.1 только The GUI way сборки заработал. Пришлось для сборки установить GNU Cmake.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории