我正在尝试使用jolt转换这个json输入。请帮我看看我的规格有什么问题。
json输入
{
"ResultSets": {
"ClassPaths": {
"currentRow": 0,
"fields": [
{
"name": "path"
},
{
"name": "loadOrder"
}
],
"rows": [
[
"/a/b/genenerator.jar",
"-10"
],
[
"/a/b/server.jar",
"0"
]
]
},
"DisabledComponents": {
"currentRow": 0,
"fields": [
{
"name": "name"
},
{
"name": "location"
}
],
"rows": [
[
"ActiveDirectoryLdapComponent",
"/a/b/component.hda"
],
[
"AppAdapterCore",
"/a/b/AdapterCore.hda"
]
]
}
}
}
预期的json输出
{
"ResultSets" : {
"ClassPaths" : [ {
"path" : "/a/b/genenerator.jar",
"loadOrder" : "-10"
}, {
"path" : "/a/b/server.jar",
"loadOrder" : "0"
} ],
"DisabledComponents" : [ {
"name" : "ActiveDirectoryLdapComponent",
"location" : "/a/b/component.hda"
}, {
"name" : "AppAdapterCore",
"location" : "/a/b/AdapterCore.hda"
} ]
}
}
我的规格是
[
{
"operation": "shift",
"spec": {
"ResultSets": {
"*": {
"rows": {
"*": {
"*": "ResultSets.&1.@(3,fields[&].name)"
}
}
}
}
}
}
]
如果我将*替换为键名(classpath或disabledcomponents),它可以工作,但只提供带有该键的json。
我不能硬编码的关键,因为它的动态,我们不知道有什么事先。
所以我想要一个规范,它不需要在规范中指定确切的键(classpath或disabledcomponents)。
请帮忙。
谢谢,哈里
1条答案
按热度按时间zaq34kh61#
你几乎是对的。以下是产生预期输出的规范:
说明:
&1
-指数组中对象的索引相反,我们想把它放在同一个索引下,但是被三层以上的对象 Package 起来。这就是为什么
&1
我们使用&3[&1]