Forum Discussion

Don's avatar
Don
New Contributor II
8 months ago

JSON path and case insensitive search

I'm having issues trying to find all instances that match a particular email address using JSONPath.  The example below is just an array of email objects, but the real data is an array or personnell profiles that I need to search by an email address that has random capitalization in it. 

Example data:

 

{    "data": [
      {"email": "yomomma@notreal.com" },
      { "email": "yoyoma@notreal.com"  },
      { "email": "yoyomama@notreal.com" },
      {"email": "someOtherEmail@notreal.com" },
      { "email": "YoMomma@notreal.com"  },
      { "email": "General@frustration.com" },
      { "email": "ILike@cookies.com" }     ]  }

 

I can get a single value out by using:

 

jsonPath($data, "$[?(@.email == 'yomomma@notreal.com')]")

 

Extending that using the regex syntax used elsewhere made me think that this should find all instances:

 

jsonPath($data, "$[?(@.email =~/yomomma@notreal.com/i )]")

 

No luck.
An alternate format (Goessner I believe) didn't work either:

 

jsonPath($data, "$[?(/yomomma@notreal.com/i.test(@.email))]")

 

 

Any help would be greatly appreciated.

4 Replies

    • Don's avatar
      Don
      New Contributor II

      While this would be a functional workaround, I was hoping to perform the whole operation through a purely jsonPath query.

      • SpiroTaleski's avatar
        SpiroTaleski
        Valued Contributor

        Not sure if JSONPath itself natively support case-insensitive comparison or regex matching directly(considering that it only returns single value).