0

如果我们有一个如下声明的 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"
4

1 回答 1

1

在 Ballerina 中,类型转换返回所需类型和错误类型的联合类型。请参阅:联合类型。这意味着 Ballerina 编译器推断的类型是 json|error。

您必须使用匹配并明确处理成功路径和失败路径。

var jsonConversionRet = <json>dt;
match (jsonConversionRet) {
    json j => j.toString();
    error err => io:println("error: " + err.message);
}
于 2018-07-26T08:48:36.877 回答