You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含error字段的Ballerina PaymentEvent record转换为json值?

将Ballerina PaymentEvent Record转换为JSON值的方法

你可以通过两种简洁的方式完成这个转换:

1. 直接类型转换

Ballerina支持record到json的直接类型转换,只要record字段类型和JSON兼容(你的PaymentEvent完全满足这个条件)。示例代码如下:

import ballerina/time;
import ballerina/io;

type PaymentEvent record {
    string orderId;
    string message;
    string occurredAt = time:utcToString(time:utcNow());
    anydata|error payload?;
};

public function main() {
    // 创建PaymentEvent实例
    PaymentEvent paymentEvent = {
        orderId: "ORD-12345",
        message: "Payment successful",
        payload: {"amount": 99.99, "method": "credit_card"}
    };

    // 直接转换为json类型
    json paymentEventJson = paymentEvent;

    // 输出验证结果
    io:println(paymentEventJson);
}

2. 使用json:fromRecord函数

如果需要更显式的转换操作,可借助json模块的fromRecord函数,效果和直接转换一致:

import ballerina/time;
import ballerina/json;
import ballerina/io;

type PaymentEvent record {
    string orderId;
    string message;
    string occurredAt = time:utcToString(time:utcNow());
    anydata|error payload?;
};

public function main() returns error? {
    PaymentEvent paymentEvent = {
        orderId: "ORD-67890",
        message: "Payment failed",
        payload: error("Insufficient funds")
    };

    // 调用fromRecord完成转换
    json paymentEventJson = check json:fromRecord(paymentEvent);

    io:println(paymentEventJson);
}

关键细节

  • 可选字段payload如果未赋值,转换后的JSON会自动忽略该字段;
  • 当payload为error类型时,转换后的JSON会包含error的完整结构(如{"message":"Insufficient funds","cause":...});
  • 默认值occurredAt会在创建record实例时自动生成,转换时会被包含在JSON结果中。

内容的提问来源于stack exchange,提问作者Poorna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:42:20