【问题标题】:Need JOLT spec for array input JSON数组输入 JSON 需要 JOLT 规范
【发布时间】:2022-08-04 22:47:39
【问题描述】:

我正在使用 JOLT 转换复杂的 json。

输入 JSON:

    { \"data\":
     [ 
      { 
       \"fieldname\": \"Name\", 
       \"fieldvalue\": [ \"John Doe\" ] 
    },
     { \"fieldname\": \"Title\", 
    \"fieldvalue\": [ \"Manager\" ] 
    }, 
    { \"fieldname\": \"Company\", 
    \"fieldvalue\": [ \"Walmart\" ] 
    }
    ] }
    

预期输出:

    { 
    \"finalPayload\":{ 
    \"PI\":{ 
    \"EmpName\":\"John Doe\", 
    \"EmpRole\":\"Manager\" 
    }, 
    \"Company\":\"Walmart\"
     } 
    }
    

我无法理解如何根据 \"fieldname\" 在输出中访问和分配 \"fieldvalue\"。请帮助我了解 JOLT 规范。

注意:输入 JSON 中的姓名、职务和公司的顺序将是混乱和随机的,这意味着在 \"data\" 数组下的第一个对象将仅与 \"Name\" 相关,这不是强制性的。

    标签: java arrays json object


    【解决方案1】:

    您好希望这可以帮助您解决您的问题。 通过进入变量并检查字段名,您也可以在 Jolt 中设置条件。

    [
      {
        "operation": "shift",
        "spec": {
          "data": {
            "*": {
              "fieldname": {
                "Name": {
                  "@(2,fieldvalue)": "finalPayload.PI.EmpName"
                },
                "Title": {
                  "@(2,fieldvalue)": "finalPayload.PI.EmpRole"
                },
                "Company": {
                  "@(2,fieldvalue)": "finalPayload.Company"
                }
              }
            }
          }
        }
      },
      {
        "operation": "cardinality",
        "spec": {
          "finalPayload": {
            "PI": {
              "EmpName": "ONE",
              "EmpRole": "ONE"
            },
            "Company": "ONE"
          }
        }
      }
      ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      相关资源
      最近更新 更多