如何将保留关键字作为名称的 JSON 有效负载转换为记录在 Ballerina 中
How to convert JSON payload with reserved keyword as name to record in Ballerina
我正在开发 Ballerina 服务,该服务接收事件并使用 convert
函数将 JSON 有效负载转换为记录。该事件包含一个名为 type
的字段,这是 Ballerina 中的保留关键字。我无法更改事件的有效负载。由于 Event
记录中的 string type;
,以下是无法编译的简化示例代码。将 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\"}"
我通读了 Ballerinas API documentation,但没有找到任何关于这个主题的内容。
来自 Java 世界,我希望在记录字段上有这样的注释:
type Event record {
string id;
@JsonProperty("type")
string eventType;
string time;
};
有没有人运行解决这个问题并且找到了更好的解决方案?
您可以按如下方式定义事件:
type Event record {
string id;
string 'type;
string time;
};
'
用于转义Ballerina中的关键字。
访问它时,您也可以将其用作 event.'type
Here 您可以找到示例用法。
我正在开发 Ballerina 服务,该服务接收事件并使用 convert
函数将 JSON 有效负载转换为记录。该事件包含一个名为 type
的字段,这是 Ballerina 中的保留关键字。我无法更改事件的有效负载。由于 Event
记录中的 string type;
,以下是无法编译的简化示例代码。将 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\"}"
我通读了 Ballerinas API documentation,但没有找到任何关于这个主题的内容。
来自 Java 世界,我希望在记录字段上有这样的注释:
type Event record {
string id;
@JsonProperty("type")
string eventType;
string time;
};
有没有人运行解决这个问题并且找到了更好的解决方案?
您可以按如下方式定义事件:
type Event record {
string id;
string 'type;
string time;
};
'
用于转义Ballerina中的关键字。
访问它时,您也可以将其用作 event.'type
Here 您可以找到示例用法。