我有一个 JSON 输入:
{
"levelOne": [
{
"leveltwo": {
"levelThree": [
{
"type": "typeOne",
"leveltwo": {
"Id": "101000094794",
"Id2": "101000013207"
}
},
{
"type": "typeTwo",
"leveltwo": {
"Id": "101000013207",
"Id2": "101000013207"
}
}
]
}
}
]
}
是否有将每个键都小写的 jolt 规范,包括嵌套对象中的键? (在这种情况下,第二层是什么)
{
"levelone": [
{
"leveltwo": {
"levelThree": [
{
"id": "101000094794",
"id2": "101000013207",
"type": "typeOne"
},
{
"id": "101000013207",
"id2": "101000013207",
"type": "typeTwo"
}
]
}
}
]
}
目前,我正在使用以下规范(颠簸模板):`
[
{
"operation": "shift",
"spec": {
"levelOne": {
"*": {
"leveltwo": {
"id": "&3[&2].leveltwo.id",
"levelThree": {
"*": {
"leveltwo": {
"Id": "&6[&5].leveltwo.&3[&2].id",
"Id2": "&6[&5].leveltwo.&3[&2].id2"
},
"type": "&5[&4].leveltwo.&2[&1].type"
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"$": "&1.key",
"@": "&1.value"
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"levelOne": {
"key": "=toLower"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"value": "@(1,key)"
}
}
}
]
预期结果(key 应该在 lower levelThree, typeOne, typeTwo):
{"levelone":[{"leveltwo":{"levelthree":[{"id":"101000094794","id2":"101000013207","type":"typeone"},{"id":"101000013207","id2":"101000013207","type":"typetwo"}]}}]}
谢谢!
您好 Priyanka,此规范将解决您的问题。您可以在 modify-overwrite-beta 操作中使用 =toLower case 函数。
[
{
"operation": "shift",
"spec": {
"levelOne": {
"*": {
"leveltwo": {
"levelThree": {
"*": {
"leveltwo": {
"*": {
//unwraps the field key and value into 2 feilds(key,Value).
"$": "levelOne.[#4].leveltwo.levelThree.[#2].leveltwo.key",
"@": "levelOne.[#4].leveltwo.levelThree.[#2].leveltwo.value"
}
}
}
}
}
}
}
}
}, {
"operation": "modify-overwrite-beta",
"spec": {
"levelOne": {
"*": {
"leveltwo": {
"levelThree": {
"*": {
"leveltwo": {
//Key is on right side using toLower to make it lowercase.
"key": "=toLower"
}
}
}
}
}
}
}
}, {
"operation": "shift",
"spec": {
"levelOne": {
"*": {
"leveltwo": {
"levelThree": {
"*": {
"leveltwo": {
// Forming the original fields from key and value fields
"value": "levelOne.[#6].leveltwo.levelThree.[#2].leveltwo.@(1,key)"
}
}
}
}
}
}
}
}
]
您可以为每个对象键(在本例中为
shift
和modify
)重复应用连续的shift
-levelOne
-levelThree
三重奏,这需要大小写转换,例如
[
{
"operation": "shift",
"spec": {
"*": {
"*": {
"*": {
"id": "&3[&2].&1.id",
"*": {
"*": {
"*": {
"Id": "&6[&5].&1.&3[&2].id",
"Id2": "&6[&5].&1.&3[&2].id2"
},
"type": "&5[&4].&3.&2[&1].type"
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"$": "&1.key",
"@": "&1.value"
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": {
"key": "=toLower"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"value": "@(1,key)"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": {
"*": {
"*": {
"$": "&4.&3.&2.&1.key",
"@": "&4.&3.&2.&1.value"
}
}
}
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": {
"*": {
"*": {
"*": {
"key": "=toLower",
"value": {
"*": {
"type": "=toLower"
}
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": {
"*": {
"*": {
"value": "&4[&3].&2.@(1,key)"
}
}
}
}
}
}
]