我正在开发一种Ballerina服务,该服务接收一个事件,并使用convert
函数将JSON有效负载转换为记录。该事件包含一个名称为type
的字段,该字段是Ballerina中的保留关键字。我无法更改事件的有效负载。以下是由于string type;
记录中的Event
而导致无法编译的简化示例代码。将type
更改为Type
或eventType
可以进行编译,但是由于JSON有效负载的字段名称与记录的字段名称不匹配,因此执行会引发错误。
import ballerina/http;
import ballerina/io;
type Event record {
string id;
string type;
string time;
};
@http:ServiceConfig { basePath: "/" }
service eventservice on new http:Listener(8080) {
@http:ResourceConfig { methods: ["POST"], path: "/" }
resource function handleEvent(http:Caller caller, http:Request request) {
json|error payload = request.getJsonPayload();
Event|error event = Event.convert(payload);
io:println(event);
http:Response response = new;
_ = caller -> respond(response);
}
}
这是一条curl
命令,该命令发送带有JSON有效负载和名称为type
的字段的示例事件。
curl -X POST localhost:8080 -H "content-type: application/json" -d "{\"id\":\"1\",\"type\":\"newItem\",\"time\":\"now\"}"
我通读了芭蕾舞女演员API documentation,但对这个话题一无所获。
来自Java世界,我希望在记录字段上有这样的注释:
type Event record {
string id;
@JsonProperty("type")
string eventType;
string time;
};
有人遇到这个问题,甚至找到更好的解决办法了吗?
答案 0 :(得分:0)
您可以如下定义事件:
type Event record {
string id;
string ^"type";
string time;
};
^
用于在Ballerina中对关键字进行转义。
访问它时,您也可以将其用作event.^"type"
Here,您可以找到用法示例。