簡體   English   中英

操作 ArrayNode 以用作 Groovy 中的 JsonBuilder 參數

[英]Manipulate ArrayNode to be used as JsonBuilder parameter in Groovy

我正在嘗試執行從服務器站點檢索一組信息的編排,並且我想操縱 output 以便僅獲取必要的數據。

輸出的操作菜單,允許我通過 Groovy 編碼來處理它。

沒有操作的 output 會拋出 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
}

我只需要行集級別的信息。 為了做到這一點,我操縱了 output 包括以下代碼:

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.databin”

我推斷錯誤原因是因為我將數組 object(行集)而不是 Object 作為 JsonBuilder 參數傳遞。

您知道如何處理 output 並將正確格式的參數傳遞給 JsonBuilder 嗎?

我想得到的 output 是:

{
  "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",
}

您可以改用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"}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM