juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2010-03-18 11:38 am

King JSON

Seems like we here are agreeing to switch from our fixed binary data packet format to JSON. Can't believe my eyes.

[identity profile] ivan-gandhi.livejournal.com 2010-03-18 08:12 pm (UTC)(link)
Моя ментальная модель всего этого дела примерно такая.

Куча разнообразных клиентов, различной природы, посылают на сервер всякую фигню. Сервер всё равно не в состоянии понять все глюки (см. браузеры и плохой html), но его задача - извлечь информацию. Если может извлечь - хорошо; если не может, ну тогда поскипаем.

Можно, конечно, потребовать, чтобы входные данные соблюдали законы, но что это даст? Да ничего, собственно. Более того, в большинстве случаев, если нам какие данные не нужны, так нам и валидировать их не нужно.

Поэтому я против xml schemas and the like.

[identity profile] jakobz.livejournal.com 2010-03-18 08:26 pm (UTC)(link)
Ну, может на мою модель отложился отпечаток того, что каждый decimal - сумма денег в чьем-то кошельке. В данном конкретном случае не о чем торговаться.

[identity profile] jakobz.livejournal.com 2010-03-18 08:30 pm (UTC)(link)
Да, входные данные всё равно вынуждены будут соблюдать какие-то свои, неписанные, законы. Плюс только в том, что на входе не будет висеть ультимативное "посторонним В.". Будет не "вы нашему формату не алё", а "да хуй с ними, пидарами, нам проще самим поправить чтобы парсилось".

[identity profile] cema.livejournal.com 2010-03-18 11:20 pm (UTC)(link)
С json можно устроить duck typing, а строгая типизация при обмене данными через интернет редко бывает нужна.

[identity profile] jakobz.livejournal.com 2010-03-19 07:40 am (UTC)(link)
Да ладно. Типы-то у данных будут в любом случае. Только вместо того, чтобы инфраструктура сама проверила и сказала что-то типа "в account.id лежит не int", где-то будет IsCorrectInt("account.id") в коде, а где-то - какой-нибудь IncorrectFormatException на выходе.

[identity profile] kashnikov.livejournal.com 2010-03-19 08:47 am (UTC)(link)
Почти, так, да. http://martin.jambon.free.fr/json-static.html ;-)

[identity profile] cema.livejournal.com 2010-03-19 10:19 pm (UTC)(link)
Тут уместна не столько типизация, сколько валидация.

[identity profile] 109.livejournal.com 2010-03-18 10:27 pm (UTC)(link)
rdf:пихай_чего_хочешь

[identity profile] asd.livejournal.com 2010-03-19 08:39 am (UTC)(link)
Bы с мобил на сервер будете присылать json или между разными серверными компонентами?

[identity profile] ivan-gandhi.livejournal.com 2010-03-19 06:35 pm (UTC)(link)
С мобил на сервер, да.

[identity profile] asd.livejournal.com 2010-03-19 08:57 pm (UTC)(link)
Компрессируете его, или трафик пофиг?
Интресно, потому что тоже с мобил запросы гоняю на сервер и всё время жутко жалко послать лишнего — настолько жалко, что BSON применяю.

[identity profile] ivan-gandhi.livejournal.com 2010-03-20 12:47 am (UTC)(link)
Да уже почти убедили. Ещё, видимо, придётся складывать в пакеты, чтобы "мета" не посылать каждый раз.