Retrieve the key value by passing another key value in json

My Json looks like this :slight_smile:
{ “main” :[
{
“CM”: “T”,
“TM”: “”
},
{
“CM”: “100000”,
“TM”: “9999”
},
{
“CM”: “200000”,
“TM”: “”
} ]
}
This is stored in an test.expr file.

I have the CM values coming from the previous snap. What i would like to achieve is - I would like to pass 100000 to CM and retrieve 9999 as result.

How can I achieve this ?

Try this:

lib.test.main.filter(x=>x.CM == $CM)[0]

2 Likes

@viji28,

If you have the liberty to restructure your test.expr expression library file, I would recommend moving to the match control operator syntax for reduced code and simpler reference. For the test.expr file, you could change it to:

{
    "main": cm => match cm {
       "T" => "",
       "100000" => "9999",
       "200000" => "",
       _ => ""
    }
}

After, you can use a simpler reference:

lib.test.main($CM)

However, if you can’t make a major change to the structure for some reason, but can adapt it to an arrow function, you can incorporate bojanvelevski’s suggestion in the expression library and still use the simpler lib.test.main($CM) reference. The file might look something like this:

{ 
	"main": (cm =>
		[
			{
				"CM": "T",
				"TM": ""
			},
			{
				"CM": "100000",
				"TM": "9999"
			},
			{
				"CM": "200000",
				"TM": ""
			}
		].filter(x=> x.CM==cm)[0].TM)
}

There are other restructuring options, as well.

1 Like

Tried this. Worked for me. Thank you so much!

Tried this, Worked for me. Thank you so much!