JSON转换使用多个阵列的震动

发布于 2025-02-04 12:55:00 字数 4290 浏览 6 评论 0 原文

我是JSON的新手。我有输入JSON,其中包括两个数组。第一(主要结果)包含两个供应商,另一个(bankDetailSet ->结果)具有供应商银行详细信息(密钥和帐户).ie供应商可以拥有多个帐户。在PUT中,每个供应商有两个帐户。我正在尝试使用JOLT,输出中,我能够获得供应商信息和银行(BSB和Account_number)。该问题是相应的供应商银行(BSB和Account_number)的详细信息错误。

  1. 输入 第一供应商(Chigo pvtlimited”) bankKey (9877988787& 89797879798)
    第二个(UFCDD PVT Limited)具有 BankKey (652588887& 294454545)

  2. pvtlimited”)具有 bsb (9877988787& 652588887)
    第二个(UFCDD Pvt Limited)具有 BSB (89797879798& 294454545)

问题是为什么在输出中互换了Bankey值(BSB) )。我已经粘贴了电流和预期输出

输入是:

{
  "d": {
    "results": [
      {
        "__metadata": {
          "type": "Core vendor.Vendor"
        },
        "VendorNumber": "7779898",
        "VendorName": "Chigo PvtLimited",
        "BankDetailSet": {
          "results": [
            {
              "__metadata": {
                "type": "UFCDR Pvt Limited"
              },
              "BankKey": "9877988787",
              "BankAccount": "987788798778879"
            },
            {
              "__metadata": {
                "type": "UFCDR Pvt Limited"
              },
              "BankKey": "89797879798",
              "BankAccount": "564654456456465"
            }
          ]
        }
      },
      {
        "__metadata": {
          "type": "Alpha vendor.Vendor"
        },
        "VendorNumber": "987545",
        "VendorName": "UFCDD  Pvt Limited",
        "BankDetailSet": {
          "results": [
            {
              "__metadata": {
                "type": "UFCDD.BankDetail"
              },
              "BankKey": "652588887",
              "BankAccount": "66887454"
            },
            {
              "__metadata": {
                "type": "UFCDR Pvt Limited"
              },
              "BankKey": "294454545",
              "BankAccount": "4578777"
            }
          ]
        }
      }
    ]
  }
}

spec 我尝试过:

  [
    {
      "operation": "shift",
      "spec": {
        "d": {
          "results": {
            "*": {
              "VendorNumber": "vendors.[&1].name",
              "VendorName": "vendors.[&1].VendorName",
              "BankDetailSet": {
                "results": {
                  "*": {
                    "BankKey": "vendors[&1].Bank[&4].bsb",
                    "BankAccount": "vendors[&1].Bank[&4].account_number"
                  }
                }
              }
            }
          }
        }
      }
    }
  ]

当前输出

{
  "vendors": [{
    "name": "7779898",
    "VendorName": "Chigo PvtLimited",
    "Bank": [{
      "bsb": "9877988787",
      "account_number": "987788798778879"
    }, {
      "bsb": "652588887",
      "account_number": "66887454"
    }]
  }, {
    "Bank": [{
      "bsb": "89797879798",
      "account_number": "564654456456465"
    }, {
      "bsb": "294454545",
      "account_number": "4578777"
    }],
    "name": "987545",
    "VendorName": "UFCDD  Pvt Limited"
  }]
}

预期输出

    {
      "vendors": [
        {
          "name": "7779898",
          "VendorName": "Chigo PvtLimited",
          "Bank": [
            {
              "bsb": "9877988787",
              "account_number": "987788798778879"
            },
            {
              "bsb": "89797879798",
              "account_number": "564654456456465"
            }
          ]
        },
        {
          "name": "987545",
          "VendorName": "UFCDD  Pvt Limited",
          "Bank": [
            {
              "bsb": "652588887",
              "account_number": "66887454"
            },
            {
              "bsb": "294454545",
              "account_number": "4578777"
            }
          ]
        }
      ]
    }







I am new new to JSON. I have Input JSON which includes two arrays. 1st one (main results) contains two vendor and other one (BankDetailSet ->results) has vendor bank details (Key and Account ).i-e vendor can have multiple accounts. In put each vendor has two accounts. I am trying with Jolt, in output, I am able to get Vendor info and bank (bsb and account_number). The issue is corresponding vendor bank (bsb and account_number ) have been populated with wrong details.

  1. In Input
    1st vendor (Chigo PvtLimited") has BankKey (9877988787 & 89797879798)
    while second one (UFCDD Pvt Limited) has BankKey (652588887 & 294454545)

  2. In Out Put 1st vendor (Chigo PvtLimited") has bsb (9877988787 & 652588887)
    while second one (UFCDD Pvt Limited) has bsb (89797879798 & 294454545)

The question is why Bankey values have been interchanged in output (bsb). I have pasted below the current and expected output

The Input is :

{
  "d": {
    "results": [
      {
        "__metadata": {
          "type": "Core vendor.Vendor"
        },
        "VendorNumber": "7779898",
        "VendorName": "Chigo PvtLimited",
        "BankDetailSet": {
          "results": [
            {
              "__metadata": {
                "type": "UFCDR Pvt Limited"
              },
              "BankKey": "9877988787",
              "BankAccount": "987788798778879"
            },
            {
              "__metadata": {
                "type": "UFCDR Pvt Limited"
              },
              "BankKey": "89797879798",
              "BankAccount": "564654456456465"
            }
          ]
        }
      },
      {
        "__metadata": {
          "type": "Alpha vendor.Vendor"
        },
        "VendorNumber": "987545",
        "VendorName": "UFCDD  Pvt Limited",
        "BankDetailSet": {
          "results": [
            {
              "__metadata": {
                "type": "UFCDD.BankDetail"
              },
              "BankKey": "652588887",
              "BankAccount": "66887454"
            },
            {
              "__metadata": {
                "type": "UFCDR Pvt Limited"
              },
              "BankKey": "294454545",
              "BankAccount": "4578777"
            }
          ]
        }
      }
    ]
  }
}

the Spec I've tried :

  [
    {
      "operation": "shift",
      "spec": {
        "d": {
          "results": {
            "*": {
              "VendorNumber": "vendors.[&1].name",
              "VendorName": "vendors.[&1].VendorName",
              "BankDetailSet": {
                "results": {
                  "*": {
                    "BankKey": "vendors[&1].Bank[&4].bsb",
                    "BankAccount": "vendors[&1].Bank[&4].account_number"
                  }
                }
              }
            }
          }
        }
      }
    }
  ]

The Current Output

{
  "vendors": [{
    "name": "7779898",
    "VendorName": "Chigo PvtLimited",
    "Bank": [{
      "bsb": "9877988787",
      "account_number": "987788798778879"
    }, {
      "bsb": "652588887",
      "account_number": "66887454"
    }]
  }, {
    "Bank": [{
      "bsb": "89797879798",
      "account_number": "564654456456465"
    }, {
      "bsb": "294454545",
      "account_number": "4578777"
    }],
    "name": "987545",
    "VendorName": "UFCDD  Pvt Limited"
  }]
}

and the Expected Output

    {
      "vendors": [
        {
          "name": "7779898",
          "VendorName": "Chigo PvtLimited",
          "Bank": [
            {
              "bsb": "9877988787",
              "account_number": "987788798778879"
            },
            {
              "bsb": "89797879798",
              "account_number": "564654456456465"
            }
          ]
        },
        {
          "name": "987545",
          "VendorName": "UFCDD  Pvt Limited",
          "Bank": [
            {
              "bsb": "652588887",
              "account_number": "66887454"
            },
            {
              "bsb": "294454545",
              "account_number": "4578777"
            }
          ]
        }
      ]
    }







如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

遗忘曾经 2025-02-11 12:55:00

您可以收集元素“ vendornumber” “ vendorname” 和带有密钥名称“ bankdetailseens” 的对象,然后设置相对定位通配符,例如 [& 1] [& 4] 在最外面“结果” array such as

[
  {
    "operation": "shift",
    "spec": {
      "d": {
        "results": {
          "*": {
            "VendorNu*": "vendors[&1].name",
            "VendorNa*": "vendors[&1].&",
            "Bank*": {
              "results": {
                "*": {
                  "Bank*": "vendors[&1].Bank[&4].&(0,1)"
                }
              }
            }
          }
        }
      }
    }
  }
]

the demo on the site http://jolt-demo.appspot.com/

Edit : What you need within the last comments is just reverse of the previous one, eg. use

"Bank*": "vendors[&4].Bank[&1].&(0,1)"

instead of

"Bank*": "vendors[&1].Bank[&4].&(0,1)" 

or literally use (as in your case)

"BankKey": "vendors[&4].Bank[&1].bsb",
"BankAccount": "vendors[&4].Bank[&1].account_number"

such as

[
  {
    "operation": "shift",
    "spec": {
      "d": {
        "results": {
          "*": {
            "VendorNu*": "vendors[&1].name",
            "VendorNa*": "vendors[&1].&",
            "Bank*": {
              "results": {
                "*": {
                  "BankKey": "vendors[&4].Bank[&1].bsb",
                  "BankAccount": "vendors[&4].Bank[&1].account_number"
                }
              }
            }
          }
        }
      }
    }
  }
]

the demo is

“

You can collect the elements "VendorNumber", "VendorName" and the object with key name "BankDetailSet" under common object notation, then set the relative positioning wildcards such as [&1], [&4] to meet at the same level of indexes of the outermost "results" array such as

[
  {
    "operation": "shift",
    "spec": {
      "d": {
        "results": {
          "*": {
            "VendorNu*": "vendors[&1].name",
            "VendorNa*": "vendors[&1].&",
            "Bank*": {
              "results": {
                "*": {
                  "Bank*": "vendors[&1].Bank[&4].&(0,1)"
                }
              }
            }
          }
        }
      }
    }
  }
]

the demo on the site http://jolt-demo.appspot.com/ is
enter image description here

Edit : What you need within the last comments is just reverse of the previous one, eg. use

"Bank*": "vendors[&4].Bank[&1].&(0,1)"

instead of

"Bank*": "vendors[&1].Bank[&4].&(0,1)" 

or literally use (as in your case)

"BankKey": "vendors[&4].Bank[&1].bsb",
"BankAccount": "vendors[&4].Bank[&1].account_number"

such as

[
  {
    "operation": "shift",
    "spec": {
      "d": {
        "results": {
          "*": {
            "VendorNu*": "vendors[&1].name",
            "VendorNa*": "vendors[&1].&",
            "Bank*": {
              "results": {
                "*": {
                  "BankKey": "vendors[&4].Bank[&1].bsb",
                  "BankAccount": "vendors[&4].Bank[&1].account_number"
                }
              }
            }
          }
        }
      }
    }
  }
]

the demo is

enter image description here

删除→记忆 2025-02-11 12:55:00

@ barbarosÖzhan,非常感谢您,以下一个正在产生所需的结果


{
“操作”:“ Shift”,

"spec": {

  "d": {

    "results": {


      "*": {
        "VendorNu*": "vendors[&1].name",
        "VendorNa*": "vendors[&1].&",
        "Bank*": {
          "results": {
            "*": {
              "BankKey": "vendors[&4].Bank[&1].bsb",
              "BankAccount": "vendors[&4].Bank[&1].account_number"
            }
          }
        }
      }
    }
  }
}

}, }
这是给出的

@ Barbaros Özhan, Thank you so much, below one is producing the required result..

[
{
"operation": "shift",

"spec": {

  "d": {

    "results": {


      "*": {
        "VendorNu*": "vendors[&1].name",
        "VendorNa*": "vendors[&1].&",
        "Bank*": {
          "results": {
            "*": {
              "BankKey": "vendors[&4].Bank[&1].bsb",
              "BankAccount": "vendors[&4].Bank[&1].account_number"
            }
          }
        }
      }
    }
  }
}

}
]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文