Re[4]: Самый удобный человеко-читаемый язык данных
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.12.24 12:29
Оценка:
Здравствуйте, vsb, Вы писали:

Pzz>>Не понимаю. В XML можно изобразить массив, просто повторяя элемент (с одинаковым именем) несколько раз. Некоторые протоколы так и делают.


vsb>Без дополнительной информации вроде XML Schema — нельзя. Т.к. нельзя отличить null от массива нулевой длины и нельзя отличить массив единичной длины от объекта.


<Array name="foo">
  <ArrayElement>0</ArrayElement>
  <ArrayElement>1</ArrayElement>
  <ArrayElement>2</ArrayElement>
</Array>


Null — отсутствие массива.

В JSON-е, кстати, тоже, null можно передать только или отсутствием, ну или впихнуть туда null, но мне кажется как-то скользко, что у некоторого элемента значением может быть или null, или нормальные данные.

Pzz>>Сам спросил, сам ответил. 2^52 же. Числа в JSON — это 64-битный float в формате IEEE 754, и это от JS так пошло.


vsb>Нет, числа в JSON вообще никак не специфицированы. В каждой реализации они по-своему работают. В Java без проблем я могу сделать 54-битное число в JSON, сформировать и прочитать. И это число в JS будет читаться неправильно.


RFC 8259, раздел 7 (https://datatracker.ietf.org/doc/html/rfc8259#page-7) прямо об этом и пишет, что числа, вообще-то, имеются ввиду IEEE 754 binary64, и что, хотя некоторые реализации делают не так, лучше бы всё же иметь это ввиду.

Pzz>>UTF-8 же.


vsb>Нет, не специфицировано, ну или я не видел.


RFC 8259, секция 8.1. (https://datatracker.ietf.org/doc/html/rfc8259#section-8.1)

Раньше "подразумевалось", но для мира RFC это нормально. Есть "священное писание" — сами RFC, а есть "священное предание" — то, что все, кому надо, знают, но оно нигде не написано.

Например, то, как в TCP передаётся urgent pointer, в RFC 793 было написано неправильно, а в ядре BSD UNIX — правильно, и все это знали (кроме Microsoft, они сделали, как в RFC, хе-хе).

Pzz>>Раздражает, что нет синтаксиса для передачи бинарных данных (массива байт).


vsb>Обычно в base64 передают.


Непонятно, получив такое, это надо буквально применять или из base64 сначала декодировать. Схемы/метаданных-то нету...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.