Re[24]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: · Великобритания  
Дата: 15.03.23 11:10
Оценка:
Здравствуйте, karbofos42, Вы писали:

K>·>По сути это просто два разных способа закодировать одно и то же. И в парсере json.net (и многих других) эти два представления будут неразличимы с точки зрения клиентского кода.

K>С точки зрения клиента нет никакой разницы, кроме того, что он может получить какие-нибудь лишние ошибки парсинга параметров, которые ему и не были нужны.
K>С точки зрения реализации огромная разница и я не понимаю смысл усложнения парсера.
Смысла нет, есть legacy. json — это подмножество javascript со своими правилами парсинга.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: vsb Казахстан  
Дата: 15.03.23 14:10
Оценка:
Здравствуйте, CreatorCray, Вы писали:

vsb>>XML плохой формат для структур данных, т.к. он не соответствует этим самым структурам данных.

CC>Шта?

Самые общераспространённые структуры данных это массивы и отображения (объекты тоже можно представить в виде отображений). В XML нет ни того, ни другого. И если отображения ещё можно как-то имитировать в виде вложенных тегов, то массивы — нельзя. В JSON этой проблемы нет.
Re[7]: JSON vs BSON: очередное торжество больного воображени
От: · Великобритания  
Дата: 15.03.23 15:33
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>>>XML плохой формат для структур данных, т.к. он не соответствует этим самым структурам данных.

CC>>Шта?
vsb>Самые общераспространённые структуры данных это массивы и отображения (объекты тоже можно представить в виде отображений). В XML нет ни того, ни другого. И если отображения ещё можно как-то имитировать в виде вложенных тегов, то массивы — нельзя. В JSON этой проблемы нет.
Список детей узла — это собственно и есть массив по сути.
А отображение можно свести к массиву kv-пар.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 15.03.2023 15:34 · . Предыдущая версия .
Re[8]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: Codealot Земля  
Дата: 15.03.23 15:33
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Это если я упираюсь в дисковые операции


А во что ты упираешься?
Ад пуст, все бесы здесь.
Re[18]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: B0FEE664  
Дата: 15.03.23 16:09
Оценка:
Здравствуйте, karbofos42, Вы писали:

BFE>>Следующие строки в Json эквивалентны: "12345" и "\u00312345". Вы уверены, что клиентский код должен об этом знать?

K>А я говорил, что должен?
Вот ваши слова: "Значение можно так строкой и хранить, т.к. она из файла и пришла."

K>Клиентский код должен знать что ему нужно в итоге получить: int, float, string,...

Если клиентскому коду нужен int, а пришла строка "12345". Это ошибка в файле Json?
И каждый день — без права на ошибку...
Re[23]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: B0FEE664  
Дата: 15.03.23 16:12
Оценка:
Здравствуйте, ·, Вы писали:

K>>Не вижу смысла городить какие-то "угадыватели", что вот тут в json написано "param":"123" — это строка, а вот в другом месте "param":123 — это уже int.

·>По сути это просто два разных способа закодировать одно и то же. И в парсере json.net (и многих других) эти два представления будут неразличимы с точки зрения клиентского кода.
Т.е. все ошибки будут игнорироваться? Как это вообще может работать без угадывания?
И каждый день — без права на ошибку...
Re[8]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: B0FEE664  
Дата: 15.03.23 16:29
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

BFE>>Не совсем понятно, что именно должен делать в таком случае парсер, что выдавать в качестве результата. Строку с пометкой "это Json число"?

CC>Никаких пометок. Просто тупо строки as is. Клиент пусть сам разбирается что ему надо было.
А! Ну отлично: парсер, который ничего не делает действительно просто написать — клиент пусть сам разбирается!
Это, извините, не парсер. Это токинайзер.

BFE>> результат положили в виде строкового значения в Json файл.

CC>Ну и чо? Пусть на принимающей стороне сами с этим долбятся. Задача именно что парсера — поделить это всё на "токены" и скормить коду импорта. Не стоит в парсер добавлять лишние сущности, от этого только лишние проблемы.
Не согласен. Парсер, в отличии от токинайзера, должен понимать грамматику и выдавать результат ей соответствующий.

BFE>> Ага, Json ведь для того и придуман, чтобы передавать данные в человекочитаемом виде.

CC>А по факту передают там что угодно. Ибо молоток и гвоздь.
По факту Json никто не использует. А то, что использует не Json.
И каждый день — без права на ошибку...
Re[24]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: · Великобритания  
Дата: 15.03.23 16:38
Оценка:
Здравствуйте, B0FEE664, Вы писали:

K>>>Не вижу смысла городить какие-то "угадыватели", что вот тут в json написано "param":"123" — это строка, а вот в другом месте "param":123 — это уже int.

BFE>·>По сути это просто два разных способа закодировать одно и то же. И в парсере json.net (и многих других) эти два представления будут неразличимы с точки зрения клиентского кода.
BFE>Т.е. все ошибки будут игнорироваться? Как это вообще может работать без угадывания?
Никак. Это же JavaScript Object Notation. Там всё про угадывание.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: B0FEE664  
Дата: 15.03.23 16:56
Оценка:
Здравствуйте, Pzz, Вы писали:

C>>Совсем хардкор не надо, но переменный размер — это элементарщина.

Pzz>Он чего-то стоит, в плане CPU

Это в сравнении с переводом числа в десятичную форму?
И каждый день — без права на ошибку...
Re[7]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: CreatorCray  
Дата: 15.03.23 17:53
Оценка:
Здравствуйте, 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>>
Re[19]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: CreatorCray  
Дата: 15.03.23 17:53
Оценка: :)
Здравствуйте, B0FEE664, Вы писали:

K>>Клиентский код должен знать что ему нужно в итоге получить: int, float, string,...

BFE>Если клиентскому коду нужен int, а пришла строка "12345". Это ошибка в файле Json?
json сам по себе это тупо строка. Там всё в текстовом виде. Если клиенту надо int то он значение (строку) затолкает в string->int конвертор, и тот либо сконвертирует либо скажет "Ошибка! Попробуй! Ещё! Раз!" (tm)
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[9]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: CreatorCray  
Дата: 15.03.23 17:53
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>парсер, который ничего не делает

Парсер разбирает формат на токены. Импортировать разобранное — не его задача вообще.

BFE> действительно просто написать — клиент пусть сам разбирается!

BFE>Это, извините, не парсер. Это токинайзер.


https://www.merriam-webster.com/dictionary/parser

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>>
Re[8]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: CreatorCray  
Дата: 15.03.23 17:53
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>>>Он чего-то стоит, в плане CPU

C>>С лихвой компенсируется экономией на дисковых операциях. Тебе это было не очевидно?
Pzz>Это если я упираюсь в дисковые операции
Да в общем то любое IO жрёт ресурсов больше
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[8]: JSON vs BSON: очередное торжество больного воображени
От: vsb Казахстан  
Дата: 15.03.23 18:01
Оценка:
Здравствуйте, 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 получится, что им будет невозможно пользоваться.

Вот простейший JSON:

{
  "services": {
    "buildroot": {
      "build": "buildroot",
      "volumes": [
        "dl:/build/dl",
        "output:/build/output"
      ]
    }
  },
  "volumes": {
    "dl": null,
    "output": null
  }
}


Попробуй представить его в XML так, чтобы это было в обе стороны однозначно и чтобы от такого XML не хотелось бы уволиться.
Отредактировано 15.03.2023 18:05 vsb . Предыдущая версия . Еще …
Отредактировано 15.03.2023 18:04 vsb . Предыдущая версия .
Re[9]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: Pzz Россия https://github.com/alexpevzner
Дата: 15.03.23 19:04
Оценка:
Здравствуйте, CreatorCray, Вы писали:

C>>>С лихвой компенсируется экономией на дисковых операциях. Тебе это было не очевидно?

Pzz>>Это если я упираюсь в дисковые операции
CC>Да в общем то любое IO жрёт ресурсов больше

Не обязательно.

Например, если ты посылаешь свои объекты по сети, причем не пачками, а штучно, то пока объект лезет в пакет, его размер не слишком-то сильно влияет на цену посылки.
Re[9]: JSON vs BSON: очередное торжество больного воображени
От: CreatorCray  
Дата: 15.03.23 20:32
Оценка: 1 (1)
Здравствуйте, vsb, Вы писали:

vsb>Только если у твоего парсера есть внешняя мета-информация о предполагаемой структуре.

Эта информация есть у кода импорта

vsb> Иначе ты не сможешь отличить массив с 0 или 1 элементом от других структур данных.

Это не задача парсера.

vsb>Попробуй представить его в XML

Просто скормил твой пример в JSON2XML, вот выхлоп
<?xml version="1.0" encoding="utf-8"?>
<JSON>
    <services>
        <buildroot build = "buildroot">
            <volumes>
                <ArrayElement Value = "dl:/build/dl"/>
                <ArrayElement Value = "output:/build/output"/>
            </volumes>
        </buildroot>
    </services>
    <volumes
        dl = "null"
        output = "null"
    />
</JSON>



vsb> чтобы от такого XML не хотелось бы уволиться.

Всё равно всё это говно в итоге читается машиной а не человеком. Человеки на это в лучшем случае смотрят через diff или иногда подправляют.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[10]: JSON vs BSON: очередное торжество больного воображени
От: vsb Казахстан  
Дата: 15.03.23 21:46
Оценка:
Здравствуйте, CreatorCray, Вы писали:

vsb>>Только если у твоего парсера есть внешняя мета-информация о предполагаемой структуре.

CC>Эта информация есть у кода импорта

Нет. Я вызываю JSON.parse и всё.

vsb>> Иначе ты не сможешь отличить массив с 0 или 1 элементом от других структур данных.

CC>Это не задача парсера.

А что задача парсера? Мне нужно текст преобразовать в массивы и отображения.

vsb>> чтобы от такого XML не хотелось бы уволиться.

CC>Всё равно всё это говно в итоге читается машиной а не человеком. Человеки на это в лучшем случае смотрят через diff или иногда подправляют.

У меня другой опыт. Постоянно приходится на это смотреть.
Re[11]: JSON vs BSON: очередное торжество больного воображени
От: CreatorCray  
Дата: 15.03.23 23:44
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Нет. Я вызываю JSON.parse и всё.

То, что оно делает больше похоже на eval

vsb>>> Иначе ты не сможешь отличить массив с 0 или 1 элементом от других структур данных.

CC>>Это не задача парсера.
vsb>А что задача парсера?

https://www.merriam-webster.com/dictionary/parser

parser noun
: one that parses
specifically : a computer program that breaks down text into recognized strings of characters for further analysis


vsb>У меня другой опыт. Постоянно приходится на это смотреть.

Соболезную
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[10]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: Codealot Земля  
Дата: 16.03.23 01:59
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Например, если ты посылаешь свои объекты по сети, причем не пачками, а штучно, то пока объект лезет в пакет, его размер не слишком-то сильно влияет на цену посылки.


А процессор — тем более.
Ад пуст, все бесы здесь.
Re[25]: JSON vs BSON: очередное торжество больного воображения и кривых рук
От: B0FEE664  
Дата: 16.03.23 10:29
Оценка:
Здравствуйте, ·, Вы писали:

BFE>>Т.е. все ошибки будут игнорироваться? Как это вообще может работать без угадывания?

·>Никак. Это же JavaScript Object Notation. Там всё про угадывание.

Вот-вот. Вот поэтому парсить Json крайне сложно.
И каждый день — без права на ошибку...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.