我正在尝试使用 Jolt 编写规范,我一直在努力解决这个问题,我想要的输出是:
{
"Team": [
{
"ID": "1",
"Source": {
"HV": 1,
"ID": 1
}
},
{
"ID": "3",
"Source": {
"HV": 2,
"ID": 3
}
}
]
}
我有以下输入:
[
{
"Page": 910407,
"TimingID": 10014,
"ScoreInfo": {
"Inn": 9,
"TB": 1,
"Team": [
{
"HV": 1,
"ID": 1,
"Score": 4
},
{
"HV": 2,
"ID": 3,
"Score": 2
}
],
"HV": null
}
}
]
但执行此规范后:
[
{
"operation": "shift",
"spec": {
"0": {
"ScoreInfo": {
"Team": {
"*": "&"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="edb9888c80c3ada4a9c3be82989f8e88" rel="noreferrer noopener nofollow">[email protected]</a>"
}
}
]
我最终得到了这个结果:
{
"Team" : {
"1" : {
"Source" : {
"HV" : 1,
"ID" : 1,
"Score" : 4
}
},
"3" : {
"Source" : {
"HV" : 2,
"ID" : 3,
"Score" : 2
}
}
}
}
我会帮助弄清楚如何解决,我一直在阅读和练习,但在某些情况下仍然有一些疑问,当输出开始变得更先进时,它需要使用 Jolt 多一点里程。
谢谢
最佳答案
应用一级shift转换就足够了,例如
[
{
"operation": "shift",
"spec": {
"*": {
"ScoreInfo": {
"Team": {
"*": {
"HV": "&2.[&1].Source.&",
"ID": "&2.[&1].Source.&",
"@(0,ID)": "&2.[&1].ID"
}
}
}
}
}
}
]
其中 &2 代表最外层的键名(Team
),[&1] 用于删除内部数组而不是get 对象,& 叶子(最里面的 & 符号)代表获取当前级别键的值,例如 HV
&ID
关于json - 需要帮助找出如何修复颠簸规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68942230/