ballerina - 如何在 Ballerina 中解构/匹配 json 类型?
问题描述
为了json
在出现错误的情况下返回默认值,我编写了以下函数,我试图对json|error
芭蕾舞演员 0.991.0 中的类型使用 match 语句
这个:
function jsonIt(json|error myJson)returns json{
match myJson {
var error(detail,message) => return {};
_ => return {};
}
}
编译(为了论证而忽略吞噬的错误),但显然不返回 json 值。
这个:
function jsonIt(json|error myJson)returns json{
match myJson {
json j => return j;
var error(detail,reason) => return {};
}
}
不会编译 =>extraneous input 'json'
基本上,我找不到任何方法来匹配可能的json
类型。我试过了:
json mj=> return mj;
var mj => return mj; //doesn't limit type to json
和其他一些人。基本上,我找不到一种方法来匹配 json 类型,或者解构它类似于error(d,m)
虽然这个问题是独立存在的,但提出一种更惯用的方式来实现这一点也将不胜感激。
解决方案
根据您的问题描述,我认为您正在尝试在这里进行类型切换。即,检查一个值是否属于特定类型。对于这个用例,您可以在 Ballerina 中使用类型测试表达式。以下两种方法应该有效。
function jsonIt(json | error myJson) returns json {
if (myJson is json) {
return myJson;
} else {
return {};
}
}
使用三元运算符
function jsonIt(json | error myJson) returns json {
return (myJson is json) ? myJson :{};
}
该match
语句执行值切换。即,根据值匹配的模式选择要执行的块
推荐阅读
- konvajs - Konvajs:如果它等于 fontSize,则文本高度不会出现在 stage.toJSON() 中
- web - 如何回答这个关于软件工程师的面试问题
- c# - 为什么用数字设置为 Int32 初始化 var
- android - 服务器错误响应上的 RxJava+Retrofit+Gson JsonSyntaxException
- reactjs - 如何在本机反应中通过id显示来自api的数据
- mysql - MySQL 查询失败:表 'opencats.module_schema' 不存在
- ios - 如何在 tableviewcell 中显示来自 JSON 的数据
- javascript - JS:生成具有“存储”级压缩的 zip 文件
- javascript - 如果 URL 与 JS 匹配,则单击按钮
- javascript - 在 reactjs 中获取 api 时出错