如何使用 Jolt 转换数组?
How do I transform an array using Jolt?
当我试图转换这样的东西时,我的转换对象得到了一个空值:
{
"employees": [
{ "f_name" : "tom", "l_name" : "smith" },
{ "f_name" : "don", "l_name" : "jones" }
]
}
对此:
{
"employees": [
{ "firstName" : "tom", "lastName" : "smith" },
{ "firstName" : "don", "lastName" : "jones" }
]
}
这是我使用的规范:
[
{
"operation" : "shift",
"spec" : {
"employees" : {
"f_name" : "firstName",
"l_name" : "lastName"
}
}
]
这是我使用的代码:
List<Object> chainrSpecJSON = JsonUtils.classpathToList("path/spec.json");
Chainr chainr = Chainr.fromSpec(chainrSpecJSON);
Object inputJSON = JsonUtils.classpathToObject("path/input.json");
Object transformed = chainr.transform(inputJSON);
System.out.println(transformed);
我能够使用与上述相同的规范和代码成功转换以下输入:
{
"employees":
{ "firstName" : "tom", "lastName" : "smith" }
}
那么我需要做什么来转换员工对象数组?
此规范可满足您的需求
[
{
"operation": "shift",
"spec": {
"employees": {
"*": {
"f_name": "employees[&1].firstName",
"l_name": "employees[&1].lastName"
}
}
}
}
]
关键是你需要使用 "*"
遍历 employees
[=25 的所有元素=]数组,那么当你向下递归/匹配到f_name
和l_name
时,你需要引用索引使用 [&1]
的数组,这意味着查找树的两层,从零到一层,并将其用作输出中的索引数组。
当我试图转换这样的东西时,我的转换对象得到了一个空值:
{
"employees": [
{ "f_name" : "tom", "l_name" : "smith" },
{ "f_name" : "don", "l_name" : "jones" }
]
}
对此:
{
"employees": [
{ "firstName" : "tom", "lastName" : "smith" },
{ "firstName" : "don", "lastName" : "jones" }
]
}
这是我使用的规范:
[
{
"operation" : "shift",
"spec" : {
"employees" : {
"f_name" : "firstName",
"l_name" : "lastName"
}
}
]
这是我使用的代码:
List<Object> chainrSpecJSON = JsonUtils.classpathToList("path/spec.json");
Chainr chainr = Chainr.fromSpec(chainrSpecJSON);
Object inputJSON = JsonUtils.classpathToObject("path/input.json");
Object transformed = chainr.transform(inputJSON);
System.out.println(transformed);
我能够使用与上述相同的规范和代码成功转换以下输入:
{
"employees":
{ "firstName" : "tom", "lastName" : "smith" }
}
那么我需要做什么来转换员工对象数组?
此规范可满足您的需求
[
{
"operation": "shift",
"spec": {
"employees": {
"*": {
"f_name": "employees[&1].firstName",
"l_name": "employees[&1].lastName"
}
}
}
}
]
关键是你需要使用 "*"
遍历 employees
[=25 的所有元素=]数组,那么当你向下递归/匹配到f_name
和l_name
时,你需要引用索引使用 [&1]
的数组,这意味着查找树的两层,从零到一层,并将其用作输出中的索引数组。