Все ли ограничения в XSD доступны в Avro? - PullRequest
0 голосов
/ 21 октября 2019

Я использую Avro, и я хочу знать, может ли ограничение, используемое в XSD, также использоваться в схеме JSon?

Например, в XSD у нас есть ограничения, подобные следующим:

1)

<xs:restriction base="xs:integer"> <xs:minInclusive value="0"/><xs:maxInclusive value="120"/>

2)

<xs:restriction base="xs:string"><xs:pattern value="[a-z]"/></xs:restriction>

Если я хочу определить элемент с аналогичными ограничениями, я смогу сделать это в схеме Json?

Ответы [ 2 ]

1 голос
/ 23 октября 2019

В соответствии со спецификацией avro https://avro.apache.org/docs/current/spec.html, вы не можете налагать ограничения на значения полей, вы только определяете тип поля.

например, поле может быть целым (32-разрядное целое число со знаком) или длинным (64-разрядное целое число со знаком) и т. Д.

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

Есливы хотите наложить ограничения на поля, ваша программа чтения / записи отвечает за проверку полей по мере необходимости.

1 голос
/ 23 октября 2019

Для ограничения числовых типов спецификация схемы JSON последней находится здесь: https://json -schema.org / понимание-json-schema / reference / numeric.html # range

Для строк, спецификация последняя JSON-схемы находится здесь: https://json -schema.org / понимание-json-схема / reference / string.html

Вы должны проверить, на какой версии схемы JSON основана Avro (так что вам следует поискать спецификацию Avro), и проверить, реализует ли она полную спецификацию (иногда накладываются ограничения).

...