在 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 上使用它,那么您应该获得整个输入比特流。
我正在使用 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 上使用它,那么您应该获得整个输入比特流。