I have this problem.
Given this sample JSON
[
{
"aaa": "-",
"name": "something_val",
"bbb": "-",
"is_active": true,
"repository": null,
"image_url": "some_val",
"ccc_id_tmp": 2,
"ddd_id_tmp": 3,
"ccc_created_at": "timestamp",
"updated_at": "timestamp",
"result_ccc_id_lookup": {
"ccc_id": "some_uuid"
},
"result_ddd_id_lookup": {
"ddd_id": "some_uuid"
}
},
{
"aaa": "hi",
"name": "something_val",
"bbb": "yooo",
"is_active": false,
"repository": null,
"image_url": "some_val",
"ccc_id_tmp": 4,
"ddd_id_tmp": 5,
"ccc_created_at": "timestamp",
"updated_at": "timestamp",
"result_ccc_id_lookup": {
"ccc_id": "some_uuid_2"
},
"result_ddd_id_lookup": {
"ddd_id": "some_uuid_2"
}
}
]
The goal is I want to use Jolt Transform to extract the values inside result_ccc_id_lookup and result_ddd_id_lookup, meaning I will extract the ccc_id and ddd_id values.
So, the expected output will be like this
{
"aaa": "-",
"name": "something_val",
"bbb": "-",
"is_active": true,
"repository": null,
"image_url": "some_val",
"ccc_id_tmp": 2,
"ddd_id_tmp": 3,
"ccc_created_at": "timestamp",
"updated_at": "timestamp",
"ccc_id": "some_uuid",
"ddd_id": "some_uuid"
}
Right now, I’m using this Jolt Transform to extract the value like the expected output
[
{
"operation": "shift",
"spec": {
"*": {
"aaa": "[&1].aaa",
"bbb": "[&1].bbb",
"objective": "[&1].objective",
"is_active": "[&1].is_active",
"repository": "[&1].repository",
"image_url": "[&1].image_url",
"ccc_id_tmp": "[&1].ccc_id_tmp",
"ddd_id_tmp": "[&1].ddd_id_tmp",
"ccc_created_at": "[&1].ccc_created_at",
"updated_at": "[&1].updated_at",
"result_ccc_id_lookup": {
"ccc_id": "[&1].ccc_id"
},
"result_ddd_id_lookup": {
"ddd_id": "[&1].ddd_id"
}
}
}
}
]
But, the output is only like this. The ccc_id and ddd_id are missing
{
"aaa": "-",
"name": "something_val",
"bbb": "-",
"is_active": true,
"repository": null,
"image_url": "some_val",
"ccc_id_tmp": 2,
"ddd_id_tmp": 3
}
Can you help me with this one? maybe something is wrong with my Jolt Transform?
Thank you
>Solution :
No need to articulate every attribute one by one, but the following transformation is enough to express all
[
{
"operation": "shift",
"spec": {
"*": {
"*": "[&1].&", // replicate all attributes those have the key which don't start with "result"
"result*": { // other elements taken from the deeper level of one step
"*": "[&2].&" // so increment the degree of identifier by 1, eg. [&1]->[&2]
}
}
}
}
]
the demo on the site http://jolt-demo.appspot.com/ is :
