我是刚接触JSON的。我输入了JSON,其中包括两个数组。第一个(主要结果)包含两个供应商,另一个(BankDetailSet ->results)有供应商的银行详细信息(密钥和帐户)。也就是说,每个供应商都有两个账户。我正在尝试与震动,在输出,我能够获得供应商的信息和银行(bsb和account_number)。问题是相应的供应商银行(bsb和account_number )已经填充了错误的细节。
输入端
第二个(UFCDD )拥有BankKey (652588887 &)
第二个(UFCDD )拥有bsb (89797879798 &)。
问题是为什么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"
}
]
}
]
}发布于 2022-06-05 18:42:30
您可以在公共对象表示法下收集元素"VendorNumber"、"VendorName"和具有键名"BankDetailSet"的对象,然后将相对定位通配符(如[&1]、[&4] )设置为满足最外层"results"数组的相同索引级别,如
[
{
"operation": "shift",
"spec": {
"d": {
"results": {
"*": {
"VendorNu*": "vendors[&1].name",
"VendorNa*": "vendors[&1].&",
"Bank*": {
"results": {
"*": {
"Bank*": "vendors[&1].Bank[&4].&(0,1)"
}
}
}
}
}
}
}
}
]站点http://jolt-demo.appspot.com/上的演示是

编辑:你在最后的评论中所需要的只是与前面的评论相反,例如。使用
"Bank*": "vendors[&4].Bank[&1].&(0,1)"而不是
"Bank*": "vendors[&1].Bank[&4].&(0,1)" 或字面上使用(如在您的情况下)
"BankKey": "vendors[&4].Bank[&1].bsb",
"BankAccount": "vendors[&4].Bank[&1].account_number"比如
[
{
"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"
}
}
}
}
}
}
}
}
]演示是

发布于 2022-06-06 17:34:16
@ Barbaros zhan,非常感谢,下面一个是产生所需结果的。
[{“行动”:“转移”,
"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"
}
}
}
}
}
}
}}]
https://stackoverflow.com/questions/72509876
复制相似问题