Здравствуйте, karbofos42, Вы писали:
K>·>По сути это просто два разных способа закодировать одно и то же. И в парсере json.net (и многих других) эти два представления будут неразличимы с точки зрения клиентского кода. K>С точки зрения клиента нет никакой разницы, кроме того, что он может получить какие-нибудь лишние ошибки парсинга параметров, которые ему и не были нужны. K>С точки зрения реализации огромная разница и я не понимаю смысл усложнения парсера.
Смысла нет, есть legacy. json — это подмножество javascript со своими правилами парсинга.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: JSON vs BSON: очередное торжество больного воображения и кривых рук
Здравствуйте, CreatorCray, Вы писали:
vsb>>XML плохой формат для структур данных, т.к. он не соответствует этим самым структурам данных. CC>Шта?
Самые общераспространённые структуры данных это массивы и отображения (объекты тоже можно представить в виде отображений). В XML нет ни того, ни другого. И если отображения ещё можно как-то имитировать в виде вложенных тегов, то массивы — нельзя. В JSON этой проблемы нет.
Re[7]: JSON vs BSON: очередное торжество больного воображени
Здравствуйте, vsb, Вы писали:
vsb>>>XML плохой формат для структур данных, т.к. он не соответствует этим самым структурам данных. CC>>Шта? vsb>Самые общераспространённые структуры данных это массивы и отображения (объекты тоже можно представить в виде отображений). В XML нет ни того, ни другого. И если отображения ещё можно как-то имитировать в виде вложенных тегов, то массивы — нельзя. В JSON этой проблемы нет.
Список детей узла — это собственно и есть массив по сути.
А отображение можно свести к массиву kv-пар.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, karbofos42, Вы писали:
BFE>>Следующие строки в Json эквивалентны: "12345" и "\u00312345". Вы уверены, что клиентский код должен об этом знать? K>А я говорил, что должен?
Вот ваши слова: "Значение можно так строкой и хранить, т.к. она из файла и пришла."
K>Клиентский код должен знать что ему нужно в итоге получить: int, float, string,...
Если клиентскому коду нужен int, а пришла строка "12345". Это ошибка в файле Json?
И каждый день — без права на ошибку...
Re[23]: JSON vs BSON: очередное торжество больного воображения и кривых рук
Здравствуйте, ·, Вы писали:
K>>Не вижу смысла городить какие-то "угадыватели", что вот тут в json написано "param":"123" — это строка, а вот в другом месте "param":123 — это уже int. ·>По сути это просто два разных способа закодировать одно и то же. И в парсере json.net (и многих других) эти два представления будут неразличимы с точки зрения клиентского кода.
Т.е. все ошибки будут игнорироваться? Как это вообще может работать без угадывания?
И каждый день — без права на ошибку...
Re[8]: JSON vs BSON: очередное торжество больного воображения и кривых рук
Здравствуйте, CreatorCray, Вы писали:
BFE>>Не совсем понятно, что именно должен делать в таком случае парсер, что выдавать в качестве результата. Строку с пометкой "это Json число"? CC>Никаких пометок. Просто тупо строки as is. Клиент пусть сам разбирается что ему надо было.
А! Ну отлично: парсер, который ничего не делает действительно просто написать — клиент пусть сам разбирается!
Это, извините, не парсер. Это токинайзер.
BFE>> результат положили в виде строкового значения в Json файл. CC>Ну и чо? Пусть на принимающей стороне сами с этим долбятся. Задача именно что парсера — поделить это всё на "токены" и скормить коду импорта. Не стоит в парсер добавлять лишние сущности, от этого только лишние проблемы.
Не согласен. Парсер, в отличии от токинайзера, должен понимать грамматику и выдавать результат ей соответствующий.
BFE>> Ага, Json ведь для того и придуман, чтобы передавать данные в человекочитаемом виде. CC>А по факту передают там что угодно. Ибо молоток и гвоздь.
По факту Json никто не использует. А то, что использует не Json.
И каждый день — без права на ошибку...
Re[24]: JSON vs BSON: очередное торжество больного воображения и кривых рук
Здравствуйте, B0FEE664, Вы писали:
K>>>Не вижу смысла городить какие-то "угадыватели", что вот тут в json написано "param":"123" — это строка, а вот в другом месте "param":123 — это уже int. BFE>·>По сути это просто два разных способа закодировать одно и то же. И в парсере json.net (и многих других) эти два представления будут неразличимы с точки зрения клиентского кода. BFE>Т.е. все ошибки будут игнорироваться? Как это вообще может работать без угадывания?
Никак. Это же JavaScript Object Notation. Там всё про угадывание.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: JSON vs BSON: очередное торжество больного воображения и кривых рук
Здравствуйте, vsb, Вы писали:
vsb>то массивы — нельзя.
И с какого перепугу вдруг массивы точно так же представить нельзя?
<Array Name = "то, что нельзя представить">
<Element>blah1</Element>
<Element>blah2</Element>
<Element Value = "blah3"/>
<Element index = "100500">blah4</Element>
...
</Array>
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[19]: JSON vs BSON: очередное торжество больного воображения и кривых рук
Здравствуйте, B0FEE664, Вы писали:
K>>Клиентский код должен знать что ему нужно в итоге получить: int, float, string,... BFE>Если клиентскому коду нужен int, а пришла строка "12345". Это ошибка в файле Json?
json сам по себе это тупо строка. Там всё в текстовом виде. Если клиенту надо int то он значение (строку) затолкает в string->int конвертор, и тот либо сконвертирует либо скажет "Ошибка! Попробуй! Ещё! Раз!" (tm)
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: JSON vs BSON: очередное торжество больного воображения и кривых рук
Здравствуйте, B0FEE664, Вы писали:
BFE>парсер, который ничего не делает
Парсер разбирает формат на токены. Импортировать разобранное — не его задача вообще.
BFE> действительно просто написать — клиент пусть сам разбирается! BFE>Это, извините, не парсер. Это токинайзер.
parser noun
: one that parses
specifically : a computer program that breaks down text into recognized strings of characters for further analysis
BFE>Парсер, в отличии от токинайзера, должен понимать грамматику и выдавать результат ей соответствующий.
А он именно грамматику формата и понимает. Но конвертацией типов данных он не занимается.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: JSON vs BSON: очередное торжество больного воображения и кривых рук
Здравствуйте, Pzz, Вы писали:
Pzz>>>Он чего-то стоит, в плане CPU C>>С лихвой компенсируется экономией на дисковых операциях. Тебе это было не очевидно? Pzz>Это если я упираюсь в дисковые операции
Да в общем то любое IO жрёт ресурсов больше
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: JSON vs BSON: очередное торжество больного воображени
Здравствуйте, CreatorCray, Вы писали:
vsb>>то массивы — нельзя. CC>И с какого перепугу вдруг массивы точно так же представить нельзя? CC>
CC><Array Name = "то, что нельзя представить">
CC> <Element>blah1</Element>
CC> <Element>blah2</Element>
CC> <Element Value = "blah3"/>
CC> <Element index = "100500">blah4</Element>
CC> ...
CC></Array>
CC>
Только если у твоего парсера есть внешняя мета-информация о предполагаемой структуре. Иначе ты не сможешь отличить массив с 0 или 1 элементом от других структур данных.
Ну или у тебя такой уродский XML получится, что им будет невозможно пользоваться.
Здравствуйте, CreatorCray, Вы писали:
C>>>С лихвой компенсируется экономией на дисковых операциях. Тебе это было не очевидно? Pzz>>Это если я упираюсь в дисковые операции CC>Да в общем то любое IO жрёт ресурсов больше
Не обязательно.
Например, если ты посылаешь свои объекты по сети, причем не пачками, а штучно, то пока объект лезет в пакет, его размер не слишком-то сильно влияет на цену посылки.
Re[9]: JSON vs BSON: очередное торжество больного воображени
Здравствуйте, vsb, Вы писали:
vsb>Только если у твоего парсера есть внешняя мета-информация о предполагаемой структуре.
Эта информация есть у кода импорта
vsb> Иначе ты не сможешь отличить массив с 0 или 1 элементом от других структур данных.
Это не задача парсера.
vsb>Попробуй представить его в XML
Просто скормил твой пример в JSON2XML, вот выхлоп
vsb> чтобы от такого XML не хотелось бы уволиться.
Всё равно всё это говно в итоге читается машиной а не человеком. Человеки на это в лучшем случае смотрят через diff или иногда подправляют.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: JSON vs BSON: очередное торжество больного воображени
Здравствуйте, CreatorCray, Вы писали:
vsb>>Только если у твоего парсера есть внешняя мета-информация о предполагаемой структуре. CC>Эта информация есть у кода импорта
Нет. Я вызываю JSON.parse и всё.
vsb>> Иначе ты не сможешь отличить массив с 0 или 1 элементом от других структур данных. CC>Это не задача парсера.
А что задача парсера? Мне нужно текст преобразовать в массивы и отображения.
vsb>> чтобы от такого XML не хотелось бы уволиться. CC>Всё равно всё это говно в итоге читается машиной а не человеком. Человеки на это в лучшем случае смотрят через diff или иногда подправляют.
У меня другой опыт. Постоянно приходится на это смотреть.
Re[11]: JSON vs BSON: очередное торжество больного воображени
Здравствуйте, vsb, Вы писали:
vsb>Нет. Я вызываю JSON.parse и всё.
То, что оно делает больше похоже на eval
vsb>>> Иначе ты не сможешь отличить массив с 0 или 1 элементом от других структур данных. CC>>Это не задача парсера. vsb>А что задача парсера?
Здравствуйте, Pzz, Вы писали:
Pzz>Например, если ты посылаешь свои объекты по сети, причем не пачками, а штучно, то пока объект лезет в пакет, его размер не слишком-то сильно влияет на цену посылки.
А процессор — тем более.
Ад пуст, все бесы здесь.
Re[25]: JSON vs BSON: очередное торжество больного воображения и кривых рук
Здравствуйте, ·, Вы писали:
BFE>>Т.е. все ошибки будут игнорироваться? Как это вообще может работать без угадывания? ·>Никак. Это же JavaScript Object Notation. Там всё про угадывание.