Estou tentando substituir valores de um array com base em um mapa de pesquisa usando Jolt, mas a especificação não parece funcionar. Ela funciona até atingir o mapa de pesquisa e eu posso deslocar o mapa inteiro, mas referenciar cada chave usando & não está funcionando como esperado.
Entrada:
{
"records": [
{
"id": "1",
"keys": [
"ba2c89c3",
"aa2c89c3"
]
}
],
"lookup": {
"ba2c89c3": "EE",
"aa2c89c3": "EL"
}
}
Saída esperada:
{
"data": {
"records": [
{
"id": "1",
"vals": [
"EE",
"EL"
]
}
]
}
}
Tentei especificar, mas parece que não funciona.
[
{
"operation": "shift",
"spec": {
"records": {
"*": {
"id": "data.records[&1].id",
"keys": {
"*": {
"@(4,lookup.&)": "data.records[&3].vals"
}
}
}
}
}
}
]
Você pode combinar pela seguinte especificação de transformação de deslocamento , na qual o mais interno
"&"
no lado esquerdo resolverá o problema:onde
vals
a matriz desaparecerá completamente se nenhum dos valores correspondera demonstração no site Jolt Transform Demo Using v0.1.1 é:
A resposta aceita de fato resolve o problema da transformação, mas postei esta solução que acabei usando.
Como o problema era usar
&
para se referir ao valor durante a iteração sobre okeys
array que estava fornecendo o índice, o que funcionou foi obter o valor usando*
conforme fornecido na solução aceita.