在avro模式中将默认值设置为null,应该是 "null" 还是 null?

6

我是Avro的新手,正在尝试定义模式。想知道如果要将值默认为null,应该是:

a. "default": null

b. "default": "null"

数据类型是否重要?例如对于int类型,则默认值将为"default": null,但对于字符串类型,则默认值应为"default":"null"吗?还是无关紧要?


如果类型是字符串并且想要设置默认值,则使用双引号作为默认值。 - Ravi
1个回答

9
要将值默认为null,必须指定"default": null。有关每种类型的示例值,请参见规范中复杂类型部分中的表格。
“数据类型”很重要。正如您可以在规范的原始类型部分中看到的那样,null是其自己的类型。您不能将int、string或任何其他原始类型设置为null。
如果您想要一个“可空”字段,请使用联合。例如:
{ "type": ["null", "int"], "default": null }

这意味着这个数据既可以是一个int,也可以是一个null。它的默认值为null。在指定联合类型的默认值时,请记住默认值必须与联合类型中的第一个类型匹配。
来自规范
(请注意,当为记录字段指定默认值且其类型为联合类型时,默认值的类型必须与联合类型的第一个元素匹配。因此,对于包含“null”的联合类型,通常将“null”列在第一位,因为这种联合类型的默认值通常为null。)

感谢您的回复。只是确认一下 - 如果类型是字符串,那么默认值应该设置为 "default": "null" 带引号,就像 @Ravi 提到的那样吗? - kodeWithKT
@kodeWithKT,是的。如果类型是字符串,并且您希望默认值为一个带有值“null”的字符串。请注意,这不是null,而是一个字符串,上面写着“null”。 - blachniet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接