如何在芭蕾舞女演员中解构/匹配json类型?

时间:2019-05-28 18:39:10

标签: ballerina

为了在发生错误的情况下返回默认的json,我编写了以下函数,在其中尝试对芭蕾舞女演员0.991.0中的json|error类型使用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)

那样对其进行解构

尽管这些问题是独立存在的,但也建议您采用一种更惯用的方式来实现这一目标。

1 个答案:

答案 0 :(得分: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语句执行值切换。即根据值匹配的模式选择要执行的块