Представление данных в формате JSON

Bool

Логическое значение.

  • Тип в JSON — bool.
  • Пример значения YTsaurus — true.
  • Пример значения JSON — true.

Int8, Int16, Int32, Int64

Целочисленные знаковые типы.

  • Тип в JSON — number.
  • Пример значения YTsaurus — 123456, -123456.
  • Пример значения JSON — 123456, -123456.

Uint8, Uint16, Uint32, Uint64

Целочисленные беззнаковые типы.

  • Тип в JSON — number.
  • Пример значения YTsaurus — 123456.
  • Пример значения JSON — 123456.

Float

Вещественное 4-байтное число.

  • Тип в JSON — number.
  • Пример значения YTsaurus — 0.12345679.
  • Пример значения JSON — 0.12345679.

Double

Вещественное 8-байтное число.

  • Тип в JSON — number.
  • Пример значения YTsaurus — 0.12345678901234568.
  • Пример значения JSON — 0.12345678901234568.

Decimal

Число с фиксированной точностью. Поддерживается только Decimal(22, 9).

  • Тип в JSON — string.
  • Пример значения YTsaurus — -320.789.
  • Пример значения JSON — "-320.789".

String, Yson

Бинарные строки. Алгоритм кодирования в зависимости от значения байта:

  • [0-31] — \u00XX (6 символов, обозначающих код символа юникода);
  • [32-126] — as is. Это читаемые однобайтовые символы, не требующие эскейпинга;
  • [127-255] — \u00XX.

При декодировании происходит обратный процесс. Коды символов в \u00XX более 255 не допускаются.

  • Тип в JSON — string.
  • Пример значения YTsaurus — последовательность из 4 байт:
    • 5 0x05 - управляющий символ;
    • 10 0x0a - перенос строки \n;
    • 107 0x6b - символ k;
    • 255 0xff - символ юникода ÿ.
  • Пример значения JSON — "\u0005\nk\u00FF".

Utf8, Json, Uuid

Строковые типы в utf-8. Такие строки представляются в JSON строками с escaping'ом JSON-символов: \\, \", \n, \r, \t, \f.

  • Тип в JSON — string.

  • Пример значения YTsaurus — код на С++:

    "Escaped characters: "
    "\\ \" \f \b \t \r\n"
    "Non-escaped characters: "
    "/ ' < > & []() ".
    
  • Пример значения JSON — "Escaped characters: \\ \" \f \b \t \r\nNon-escaped characters: / ' < > & []() ".

Date

Дата. Uint64, количество дней unix time.

  • Тип в JSON — string.
  • Пример значения YTsaurus — 18367.
  • Пример значения JSON — "2020-04-15".

Datetime

Дата и время. Uint64, количество секунд unix time.

  • Тип в JSON — string.
  • Пример значения YTsaurus — 1586966302.
  • Пример значения JSON — "2020-04-15T15:58:22Z".

Timestamp

Дата и время. Uint64, количество микросекунд unix time.

  • Тип в JSON — string.
  • Пример значения YTsaurus — 1586966302504185.
  • Пример значения JSON — "2020-04-15T15:58:22.504185Z".

Interval

Временной интервал. Int64, точность до микросекунд, допустимы значения интервалов - не более 24 часов.

  • Тип в JSON — number.
  • Пример значения YTsaurus — 123456, -123456.
  • Пример значения JSON — 123456, -123456.

Optional

Означает, что значение может быть null. Если значение null, то в JSON также будет null. Если значение не null, то в JSON значение запишется так же, как если бы тип был не Optional.

  • Тип в JSON — отсутствует.
  • Пример значения YTsaurus — null.
  • Пример значения JSON — null.

List

Список. Упорядоченный набор значений заданного типа.

  • Тип в JSON — array.
  • Пример значения YTsaurus:
    • тип — List<Int32>;
    • значение — 1, 10, 100.
  • Пример значения JSON — [1,10,100].

Stream

Поток. Однопроходной итератор по значениям одного типа.

  • Тип в JSON — array.
  • Пример значения YTsaurus:
    • тип — Stream<Int32>;
    • значение — 1, 10, 100.
  • Пример значения JSON — [1,10,100].

Struct

Структура. Неупорядоченный набор значений с заданными именами и типом.

  • Тип в JSON — object.
  • Пример значения YTsaurus:
    • тип — Struct<'Id':Uint32,'Name':String,'Value':Int32,'Description':Utf8?>;
    • значение — "Id":1,"Name":"Anna","Value":-100,"Description":null.
  • Пример значения JSON — {"Id":1,"Name":"Anna","Value":-100,"Description":null}.

Tuple

Кортеж. Упорядоченный набор значений заданных типов.

  • Тип в JSON — array.
  • Пример значения YTsaurus:
    • тип — Tuple<Int32??,Int64???,String??,Utf8???>;
    • значение — 10,-1,null,"Some string".
  • Пример значения JSON — [10,-1,null,"Some string"].

Dict

Словарь. Неупорядоченный набор пар ключ-значение. И для ключа, и для значения задан тип. В json записывается в массив массивов, состоящих из двух элементов.

  • Тип в JSON — array.
  • Пример значения YTsaurus:
    • тип — Dict<Int64,String>;
    • значение — 1:"Value1",2:"Value2".
  • Пример значения JSON — [[1,"Value1"],[2,"Value2"]].