【发布时间】:2019-08-16 07:41:18
【问题描述】:
我是 Avro 的新手,正在尝试定义模式。想知道我是否试图将一个值默认为 null,应该是:
一个。 “默认”:空
b. “默认”:“空”
数据类型是什么重要吗?像 int 那么默认值将是“default”:null,但是当它是一个字符串时,默认值应该是“default”:“null”?还是没关系?
【问题讨论】:
-
如果类型是字符串并且想设置默认值,那么使用双引号作为默认值。
我是 Avro 的新手,正在尝试定义模式。想知道我是否试图将一个值默认为 null,应该是:
一个。 “默认”:空
b. “默认”:“空”
数据类型是什么重要吗?像 int 那么默认值将是“default”:null,但是当它是一个字符串时,默认值应该是“default”:“null”?还是没关系?
【问题讨论】:
要将值默认为 null,您必须指定 "default": null。有关每种类型的示例值,请参阅规范的 Complex Types 部分中的表格。
数据类型是什么重要吗?
是的,类型很重要。正如您在规范的Primitive Types 部分中看到的,null 是它自己的类型。您不能将int、string 或任何其他原始类型设置为null。
如果您想要一个“可空”字段,请使用Unions。例如:
{ "type": ["null", "int"], "default": null }
这表明该数据可能是int,也可能是null。默认为null。为联合指定默认值时,请记住默认值必须与联合中的第一个类型匹配。
(请注意,当为类型为联合的记录字段指定默认值时,默认值的类型必须与联合的第一个元素匹配。因此,对于包含“null”的联合,“null”通常首先列出,因为此类联合的默认值通常为 null。)
【讨论】: