【问题标题】:How to de-structure/match json type in Ballerina?如何在 Ballerina 中解构/匹配 json 类型?
【发布时间】:2019-05-28 18:39:09
【问题描述】:

为了在出错的情况下返回默认的json,我编写了以下函数,我试图在芭蕾舞演员0.991.0 中对json|error 类型使用匹配语句

这个:

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


    【解决方案1】:

    根据您的问题描述,我认为您正在尝试在此处进行类型切换。即,检查一个值是否属于特定类型。对于此用例,您可以在 Ballerina 中使用 type test expression。以下两种方法应该有效。

    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 语句执行值切换。即,根据值匹配的模式选择要执行的块

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2018-06-09
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多