cancel
Showing results forย 
Search instead forย 
Did you mean:ย 

Adding element to array

Ajay_Chawda
Contributor

Input json :-[
{
โ€œe_noโ€: โ€œ1โ€,
โ€œemailโ€: โ€œabc@gmail.comโ€,
โ€œcountryโ€: โ€œIndiaโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œBโ€,
โ€œdataโ€: [
{
โ€œe_noโ€: โ€œ12โ€,
โ€œemailโ€: โ€œabc4@gmail.comโ€,
โ€œcountryโ€: โ€œIndiaโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œcโ€
},
{
โ€œe_noโ€: โ€œ13โ€,
โ€œemailโ€: โ€œabc3@gmail.comโ€,
โ€œcountryโ€: โ€œUSโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œdโ€
},
{
โ€œe_noโ€: โ€œ14โ€,
โ€œemailโ€: โ€œabc2@gmail.comโ€,
โ€œcountryโ€: โ€œIndiaโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œnโ€
},
{
โ€œe_noโ€: โ€œ15โ€,
โ€œemailโ€: โ€œabc1@gmail.comโ€,
โ€œcountryโ€: โ€œUKโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œfโ€
}
]
},
{
โ€œe_noโ€: โ€œ4โ€,
โ€œemailโ€: โ€œa@gmail.comโ€,
โ€œcountryโ€: โ€œIndiaโ€,
โ€œfirstnameโ€: โ€œcโ€,
โ€œlast nameโ€: โ€œDโ€
},
{
โ€œe_noโ€: โ€œ5โ€,
โ€œemailโ€: โ€œb@gmail.comโ€,
โ€œcountryโ€: โ€œUSโ€,
โ€œfirstnameโ€: โ€œCโ€,
โ€œlast nameโ€: โ€œDโ€
}
]

Output JSON required :-
[
{
โ€œe_noโ€: โ€œ1โ€,
โ€œemailโ€: โ€œabc@gmail.comโ€,
โ€œcountryโ€: โ€œIndiaโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œBโ€,
โ€œdataโ€: [
{
โ€œe_noโ€: โ€œ12โ€,
โ€œemailโ€: โ€œabc4@gmail.comโ€,
โ€œcountryโ€: โ€œIndiaโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œcโ€,
โ€œageโ€:โ€œ12โ€
},
{
โ€œe_noโ€: โ€œ13โ€,
โ€œemailโ€: โ€œabc3@gmail.comโ€,
โ€œcountryโ€: โ€œUSโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œdโ€,
โ€œageโ€:โ€œ13โ€
},
{
โ€œe_noโ€: โ€œ14โ€,
โ€œemailโ€: โ€œabc2@gmail.comโ€,
โ€œcountryโ€: โ€œIndiaโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œnโ€,
โ€œageโ€:โ€œ14โ€
},
{
โ€œe_noโ€: โ€œ15โ€,
โ€œemailโ€: โ€œabc1@gmail.comโ€,
โ€œcountryโ€: โ€œUKโ€,
โ€œfirstnameโ€: โ€œAโ€,
โ€œlast nameโ€: โ€œfโ€,
โ€œageโ€:โ€œ15โ€
}
]
},
{
โ€œe_noโ€: โ€œ4โ€,
โ€œemailโ€: โ€œa@gmail.comโ€,
โ€œcountryโ€: โ€œIndiaโ€,
โ€œfirstnameโ€: โ€œcโ€,
โ€œlast nameโ€: โ€œDโ€
},
{
โ€œe_noโ€: โ€œ5โ€,
โ€œemailโ€: โ€œb@gmail.comโ€,
โ€œcountryโ€: โ€œUSโ€,
โ€œfirstnameโ€: โ€œCโ€,
โ€œlast nameโ€: โ€œDโ€
}
]

wanted to add element in array with values of e_no.

image

5 REPLIES 5

tlikarish
Employee
Employee

Looks like a frustrated emoji on the end of that line ๐Ÿ˜„

If I understand you correctly, you want to add a new field called age to each element in your input as well as any field called data in an input document. To do this you can use the map function on the data array to apply a transformation to each element of the array.

Hereโ€™s what it looks like in the expression language:

$.data.map(e => e.extend({'age': e.e_no}))

This says, for each element of $.data extend it with a new field called age that is just a mapping of e_no. Putting this in the mapper will look like

image

Note that this will also append a data field to each element of the array. If it was missing, then the value will be null. You could filter these out downstream if you like.

tlikarish
Employee
Employee

A colleague (HT @tstack) mentioned an alternative method thatโ€™s a bit simpler. You could use a mapper with the Mapping Root set to $.data[*] and the just map e_no to age in the mapper. Attaching an example pipeline to illustrate the idea.

eno-to-age_2019_01_25.slp (5.8 KB)

Hi @tlikarish
Thank you for providing solution.it worked.

KTsnap
New Contributor III

What needs to be done if i want to add one more record in this array for example
{
โ€œe_noโ€: โ€œ6โ€,
โ€œemailโ€: โ€œc@gmail.comโ€,
โ€œcountryโ€: โ€œUSโ€,
โ€œfirstnameโ€: โ€œCโ€,
โ€œlast nameโ€: โ€œDโ€
}