json Jolt将逗号分隔数组转换为数组

xa9qqrwz  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(110)

我是JOLT的新手。这是我试图实现的转变:
输入json是一个逗号分隔的对象。输入json看起来像这样:

{
  "Ids": {
    "IND": {
      "IND-ADR": {
        "id": "ind-adr-id",
        "key": "ind1"
      },
      "IND-PAN": {
        "id": "ind-pan-id",
        "key": "ind2"
      }
    },
    "USA": {
      "USA-SSN": {
        "id": "usa-ssn-id",
        "key": "usa1"
      }
    }
  }
}

字符串
期望的输出看起来像一个列表中的3个单独的项目。期望的输出:

{
  "Ids": [
    {
      "country": "IND",
      "IdType": "IND-ADR",
      "id": "ind-adr-id",
      "key": "ind1"
    },
    {
      "country": "IND",
      "IdType": "IND-PAN",
      "id": "ind-pan-id",
      "key": "ind2"
    },
    {
      "country": "USA",
      "IdType": "USA-SSN",
      "id": "usa-ssn-id",
      "key": "usa1"
    }
  ]
}


我的输出:

{
  "country" : [ "IND", "USA" ],
  "IdType" : [ "IND-ADR", "IND-PAN", "USA-SSN" ],
  "id" : [ "ind-adr-id", "ind-pan-id", "usa-ssn-id" ],
  "Key" : [ "ind1", "ind2", "usa1" ]
}


我的震动规格:

[
  {
    "operation": "shift",
    "spec": {
      "Ids": {
        "*": {
          "$": "country",
          "*": {
            "$": "IdType",
            "*": "&"
          }
        }
      }
    }
  }
]


我做错了什么?如何使用jolt规格转换获得预期的输出。我正在使用Jolt演示网站进行演示,希望得到一些帮助。
先谢了。

jdgnovmf

jdgnovmf1#

您的规格相当不错,但缺少以下内容:

  • 通过从不同级别获取的标识符(如 &1&2&3)进行分隔
  • 从最深的层次调用每一对,例如,你可以通过使用 *$1 * 表示将国家添加到最深的层次

所以下面的转换将处理这个问题

[
  { // separation of objects
    "operation": "shift",
    "spec": {
      "Ids": {
        "*": {
          "*": {
            "$1": "&2_&1.&3.country", // &3 needed to keep the literal "Ids" for the next spec
            "$": "&2_&1.&3.IdType",
            "*": "&2_&1.&3.&"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": "&1[#3].&" //&1 represents going one level and copying the key, eg. "Ids"
        }
      }
    }
  }
]

字符串
网站http://jolt-demo.appspot.com/上的 * 演示 * 是:


的数据

相关问题