You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何约束Ballerina中JsonSchema与ArraySchema记录的'type字段取值?

Ballerina记录类型字段的预定义值约束方法

下面是几种约束JsonSchema和ArraySchema中'type字段值的实用方法:

方法1:使用类型约束表达式

直接在字段类型后添加where约束,编译期即可校验非法值,实现方式最简洁:

type JsonSchema record{|
    string 'type where 'type == "object";
    json properties;
|};

type ArraySchema record{|
    string 'type where 'type == "array";
    json items;
|};

当尝试给JsonSchema的'type传入非"object"字符串时,编译器会直接抛出错误,确保字段值符合要求。

方法2:使用枚举类型

先定义包含允许值的枚举,再将字段类型绑定到对应枚举成员,既约束值范围,又提升代码可读性与扩展性:

// 定义Schema类型枚举
type SchemaType enum {
    OBJECT = "object",
    ARRAY = "array"
};

type JsonSchema record{|
    SchemaType 'type = SchemaType.OBJECT;
    json properties;
|};

type ArraySchema record{|
    SchemaType 'type = SchemaType.ARRAY;
    json items;
|};

这里给字段设置了默认值,用户显式赋值时只能传入枚举成员对应的有效值。后续若需新增其他Schema类型(如"string"),只需扩展枚举即可,维护成本更低。

方法3:使用只读默认字段

如果希望'type字段固定为预定义值、不允许用户修改,可以添加readonly修饰符并设置默认值:

type JsonSchema record{|
    readonly string 'type = "object";
    json properties;
|};

type ArraySchema record{|
    readonly string 'type = "array";
    json items;
|};

这种方式下,用户无法显式修改'type字段,该字段始终保持默认的预定义值,彻底杜绝非法赋值的可能。

内容的提问来源于stack exchange,提问作者Kavindu Gimhan Zoysa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:50:14