Управление ArrayNode для использования в качестве параметра JsonBuilder в Groovy

Я пытаюсь выполнить оркестрацию, которая извлекает набор информации с сайта сервера, и я хочу манипулировать выводом, чтобы получать только необходимые данные.

Меню манипулирования выводом позволяет мне обрабатывать его с помощью кодификации Groovy.

Вывод без манипуляций выдает JSON, как показано ниже:

{
  "formId": "P43081_W43081A",
  "gridId": "1",
  "title": "Work With Orders Awaiting Approval",
  "rowset": [
    {
      "P43081_AN8_Originator": "304565",
      "P43081_DL01_Supplier": "I.T. Laptop/Tablets",
      "P43081_AN8_Supplier": "533104",
    },
    {
      "P43081_AN8_Originator": "304565",
      "P43081_DL01_Supplier": "I.T. Laptop/Tablets",
      "P43081_AN8_Supplier": "533104",
    },
    {
      "P43081_AN8_Originator": "304565",
      "P43081_DL01_Supplier": "Office Plus Supplies",
      "P43081_AN8_Supplier": "533103",
    }
  ],
  "records": 3,
  "moreRecords": false
}

Мне нужна информация только на уровне набора строк. Чтобы сделать это, я манипулировал выводом, включая следующий код:

import groovy.json.JsonSlurper;
import groovy.json.JsonBuilder;
import com.oracle.e1.common.OrchestrationAttributes;
String main(OrchestrationAttributes orchAttr, String input)
{
  def jsonIn = new JsonSlurper().parseText(input);
  // modify jsonIn;
  def jsonOut = new JsonBuilder(jsonIn.rowset);
  // orchAttr.writeWarn("custom log entry - warning");
  // orchAttr.writeDebug("custom log entry - debug");
  return jsonOut;
}

И это выдает мне следующую ошибку:

сообщение: com.fasterxml.jackson.databind.node.ArrayNode не может быть приведен к com.fasterxml.jackson.databind.node.ObjectNode

Я делаю вывод, что причина ошибки заключается в том, что я передаю в качестве параметра JsonBuilder объект Array (набор строк) вместо объекта.

Знаете ли вы, как я могу обработать вывод и передать параметр в правильном формате в JsonBuilder?

Результат, который я хочу получить:

{
  "P43081_AN8_Originator": "304565",
  "P43081_DL01_Supplier": "I.T. Laptop/Tablets",
  "P43081_AN8_Supplier": "533104",
},
{
  "P43081_AN8_Originator": "304565",
  "P43081_DL01_Supplier": "I.T. Laptop/Tablets",
  "P43081_AN8_Supplier": "533104",
},
{
  "P43081_AN8_Originator": "304565",
  "P43081_DL01_Supplier": "Office Plus Supplies",
  "P43081_AN8_Supplier": "533103",
}

person Marce    schedule 03.02.2021    source источник


Ответы (1)


Вместо этого вы можете использовать JsonOutput. Например.

import groovy.json.*

def data = new JsonSlurper().parse("data.json" as File)
println(JsonOutput.toJson(data.rowset));
// ⇒ [{"P43081_AN8_Originator":"304565","P43081_DL01_Supplier":"I.T. Laptop/Tablets","P43081_AN8_Supplier":"533104"},{"P43081_AN8_Originator":"304565","P43081_DL01_Supplier":"I.T. Laptop/Tablets","P43081_AN8_Supplier":"533104"},{"P43081_AN8_Originator":"304565","P43081_DL01_Supplier":"Office Plus Supplies","P43081_AN8_Supplier":"533103"}]
person cfrick    schedule 03.02.2021