Получение всего JSON запроса на ввод в JavaCompute - PullRequest
0 голосов
/ 17 февраля 2020

Я использую 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();

Но оба возвращают ноль. Может кто-нибудь, пожалуйста, скажите мне, как получить весь ввод json в виде строки в моем JavaCompute. Мой ввод JSON выглядит следующим образом

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

, и я хочу, чтобы все это сообщение было извлечено из узла JavaCompute.

Обновление: основываясь на ответе Кимберта, я обновил код ниже и это сработало:

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

Теперь у inRootString есть строковое значение моего ввода json.

1 Ответ

1 голос
/ 18 февраля 2020

Класс MbElement - это просто оболочка для «синтаксического элемента» в дереве сообщений IIB. Таким образом, MbElement.getValueAsString будет возвращать строковое значение элемента синтаксиса. Это может быть строка (если MbElement представляет строковое поле) или ноль, но это никогда не будет фрагмент документа, из которого был проанализирован этот элемент.

Вам необходимо использовать MbElement.toBitstream. Если вы используете его на элементе MbElement, который указывает на Input Root. JSON, то вы должны получить весь входной поток битов.

...