XML vs JSON

Alex Bond

Новичок
Всем привет!

Вчера был на MageConf в Киеве и заметил одну интересную вещь:
Все по прежнему юзают XML для всяких API.
Вопрос - зачем? Ведь JSON более компактный и системы парсят его быстрее...
 

A1x

Новичок
XML человеко-читаем, считается что это важно :)
хотя программно работать с JSON удобнее
 

Alex Bond

Новичок
Ну в реальности - всякие API ведь если и читаются то только программистом)
 

AmdY

Пью пиво
Команда форума
В общем случае это кретинизм, простой php array прекрасно подходит и не нужно юзать 100 слоёв кэша. Я вот узаю кое где ini файлы, так одни проблемы с парсингом под разные версии php, плююсь но продолжаю грызть кактус :(.
Но в частном, если разработчик грамотный, то у xml есть преимущество в удобной валидации через dtd или xml schema.
 

С.

Продвинутый новичок
заметил одну интересную вещь: Все по прежнему юзают XML для всяких API.
Это далеко не так. В новых проектах JSON усппешно вытесняет XML.
 

Alex Bond

Новичок
Хмм.. А почему бы не придумать что то вроде dtd или xml schema для массивов? Ведь может сильно облегчить задачу...
 

tz-lom

Продвинутый новичок
Alex Bond
задачу чего?
для XML в своё время было написано некоторое количество тулзов которые по описанию сервиса генерили код для работы с оным, тогда это выглядело круто и прикольно - суёшь URL а на выходе классы, которые ты просто дёргаешь и сервис вызывается. На практике - скатилось в УГ т.к. описать сервис руки-хуки нормально не могут,а по кривому сервису и код не генерится (или генерится,но не тот). Итог - ламеры не могут работать т.к. не работает, люди знающие "развлекаются" исправлениями чужих косяков (dtd и shema для валидации сервисов конечно есть, но кто их юзает при разработке? единицы)
ИРЛ - апилка она и есть апилка, сильно сложными они так и не стали, сильно простыми тоже
массивы РНР кидать - глупое занятие т.к. не РНР единым
JSON используют,но не все и не всегда, ну и ладно, кстати стандарт JSON RPC есть, но всем как всегда ...
существующее положение дел сводится к следующему:
если хочешь чтобы твои API использовали - пиши биндинги на С++, РНР, перл, джаву, питон, дотнет сам, ну или будь гуглом, тогда их напишут за тебя(иногда - весьма криво,что тоже доставит тем кто с ними будет работать)
ну а дальше - кто во что горазд
 

tz-lom

Продвинутый новичок
Adelf
JSON зачастую более читаем
но если использовать все возможности XML - пространства имён,аттрибуты, короткую и длинную запись, CDATA ну итд, то эквивалентный JSON будет ужасен
только вот кто это всё использовать станет? :)
 

С.

Продвинутый новичок
Возможности XML конечно много шире. Только в 95% надо передать лишь простой массив данных, с которым легко справляется JSON, а то и CSV.
 

~WR~

Новичок
Обратил внимание, что все последние API, с которыми работал, позволяют указать тип возвращаемых данных. И могут вернуть как XML, так и JSON. Нет проблем.

Реальный смысл в XML вижу только при передаче очень больших объемов информации, типа прайс-листов. Именно на больших объемах сильно помогает "читаемость". Но до сих пор не понимаю, зачем там нужны namespace. Видимо, для того, чтобы себя запутать побольше.
 

Adelf

Administrator
Команда форума
~WR~
на больших обьемах информации очень сильно помогает csv :)
 

~WR~

Новичок
Я о другом.

Например, в случае яндекс маркета часто возникают вопросы, попали есть ли определенный товар в XML, и с какими параметрами он реально выгрузился на момент N. Я просто захожу в архив и делают поиск по подстроке. И сразу нахожу то, что нужно.

Например: <offer id="12345"

В JSON или в CSV искать тяжелее. В прайсах на миллион позиций комбинации цифр повторяются часто. А даже если найдешь нужную строку - её еще надо расшифровать. А в XML все сразу видно.

Единственный плюс XML для меня.
 

Adelf

Administrator
Команда форума
Есть у меня подозрение, что люди, говорящие плохо о читабельности JSON, ни разу не пробовали его отформатировать.
Тоже самое касается и "если найдешь нужную строку - её еще надо расшифровать".
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
кстати, как лучше передавать бинарные данные в json-rpc?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Adelf это очень логично, но увеличивает трафик в 1,5 раза
 

Absinthe

жожо
Есть у меня подозрение, что люди, говорящие плохо о читабельности JSON, ни разу не пробовали его отформатировать.
Как правило, люди говорящие о том, что XML более читаемый,пользуются BEGIN и END вместо { и }. Им так привычнее.
 
Сверху