在 JavaCompute 中获取整个 JSON 个输入请求

Getting whole JSON input request in JavaCompute

我正在使用 IIB v10.0.0.18 并且我有 JSON 输入消息,它由 http 输入节点接收,然后是一个 JavaCompute 节点,我试图在其中获取整个 JSON 输入。 我正在使用以下代码来执行此操作

MbMessage inMessage = inAssembly.getMessage();
MbElement inRoot = inMessage.getRootElement();
String inputMsg = inRoot.getFirstElementByPath("/JSON/Data/*").getValueAsString();

但这只会导致输入消息的第一行。 我也试过了

String inputMsg = inRoot.getFirstChild().getValueAsString();

String inputMsg = inRoot.getLastChild().getValueAsString();

但两者都返回空值。 谁能告诉我如何在我的 JavaCompute 中将整个 json 输入作为字符串。 我的输入 JSON 看起来像这样

{
"id": 1,
"name": "A green door",
"price": 12.50
}

并且我希望从 JavaCompute 节点检索整个消息。

更新: 根据 Kimbert 的回答,我将代码更新为以下并且有效:

MbMessage inMessage = inAssembly.getMessage();
MbElement inRoot = inMessage.getRootElement();
byte[] inRootBytes = inRoot.getLastChild().toBitstream(null, null, null, 0, 1208, 0);
String inRootString = new String(inRootBytes);

现在,inRootString 具有我输入的字符串值 json。

MbElement class 只是 IIB 消息树中 'syntax element' 的包装器。所以 MbElement.getValueAsString 将 return 语法元素的字符串值。这可能是一个字符串(如果 MbElement 表示一个字符串字段)或 null,但它永远不会是从中解析该元素的文档片段。

您需要使用 MbElement.toBitstream。如果您在指向 InputRoot.JSON 的 MbElement 上使用它,那么您应该获得整个输入比特流。