java - 使用 WSO2 类中介转换 JSON 主体

标签 java json wso2 wso2-esb

以下是我当前 json 正文的日志。我想为这个 body 添加新的属性。 “新属性名称”:“值”。由于该值在数据库中,因此我使用类中介来添加此属性。

[2015-05-18 05:47:08,730]  INFO - LogMediator To: /a/create-project, MessageID: urn:uuid:b7b6efa6-5fff-49be-a94a-320cee1d4406, Direction: request, _______BODY_______ = 
{
  "token": "abc123",
  "usertype":"ext",
  "request": "create"
}

类调解器的调解方法,

public boolean mediate(MessageContext mc) {
        mc.setProperty("key", "vale retrived from db");
        return true;
}

但这并不像我预期的那样有效。我找不到任何使用类中介向 json 正文添加属性的指南,请帮忙。

最佳答案

要向主体注入(inject)属性,您必须使用以下代码片段,

JsonUtil.newJsonPayload(
            ((Axis2MessageContext) context).getAxis2MessageContext(),
            transformedJson, true, true);

在类(class)调解员内部。以下是中介方法的示例。

/**
 * Mediate overridden method to set the token property.
 */@Override
public boolean mediate(MessageContext context) {
try {

    // Getting the json payload to string
    String jsonPayloadToString = JsonUtil.jsonPayloadToString(((Axis2MessageContext) context)
        .getAxis2MessageContext());
    // Make a json object
    JSONObject jsonBody = new JSONObject(jsonPayloadToString);

    // Adding the name:nameParam.
    jsonBody.put("name", getNameParam());

    String transformedJson = jsonBody.toString();

    // Setting the new json payload.
    JsonUtil.newJsonPayload(
    ((Axis2MessageContext) context).getAxis2MessageContext(),
    transformedJson, true, true);

    System.out.println("Transformed JSON body:\n" + transformedJson);

} catch (Exception e) {
    System.err.println("Error occurred: " + e);
    return false;
}

return true;
}

为此您需要 json 和其他库。以下博客文章对此进行了全面解释。

json-support-for-wso2-esb-class-mediator

关于java - 使用 WSO2 类中介转换 JSON 主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30296197/

相关文章:

json - 编写自定义插件,它可以处理并返回正文中格式错误的 JSON 的正确错误

javascript - 使用 gulp 将文件复制到多个动态路径

ios - 无法使用 '[item]' 类型的索引为 'item' 类型的值添加下标

java - WSO2 映射问题

api - 无法通过 WSO2 API 管理器中自定义中介流中的 Call Mediator

ssl-certificate - 在 WSO2Carbon 中执行 API 时的 bad_certificate

java - 在 JTable 中添加或删除行后如何刷新 JTree

java - 如何为 Vaadin 应用程序录制/捕获语音/视频

java - 使用 Java 流将列表转换为映射

java - 我可以在java MVC模型中使用getter和setter吗