如果我们有一个声明如下的json变量,我们可以直接使用.toString()。背后的逻辑是什么?
json a1 = {"a":"a", "b":"b"};
string c = a1.toString();
但是,如果我们声明了以下var,则不能使用.toString()。
table dt ;
...
var jsonConversionRet = <json>dt;
jsonConversionRet.toString(); // throws error "function invocation on type 'json|error' is not supported"
答案 0 :(得分:1)
在Ballerina类型转换中,返回所需类型和错误类型的并集类型。 请参阅:union type。这意味着Ballerina编译器推断的类型是 json |错误。
您必须使用匹配项,并明确处理成功路径和失败路径。
var jsonConversionRet = <json>dt;
match (jsonConversionRet) {
json j => j.toString();
error err => io:println("error: " + err.message);
}