Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

filter the Json according to string in an array in JSONPATH

Tags:

jsonpath

I have a situation where I have json String that has a child as Array that contains only Strings. Is there as way I can get the object reference of the arrays that contains a specific String. Example:

{ "Books":{  
      "History":[  
         {  
            "badge":"y",
            "Tags":[  
               "Indian","Culture"
            ],
            "ISBN":"xxxxxxx",
            "id":1,
            "name":"Cultures in India"
         },
         {  
            "badge":"y",
            "Tags":[  
               "Pre-historic","Creatures"
            ],
            "ISBN":"xxxxxxx",
            "id":1,
            "name":"Pre-historic Ages"
         }
     ]
  }
}

To Achieve: From the above JSON String, need to get all books in History which contains "Indian" inside the "tags" list.

I am using JSONPATH in my project but If there is other API that can provide similar functionality, any help is welcome.

like image 812
user2413561 Avatar asked Dec 15 '22 14:12

user2413561


1 Answers

If you're using Goessner JSONPath, $.Books.History[?(@.Tags.indexOf('Indian') != -1)] as mentioned by Duncan above should work.

If you're using the Jayway Java port (github.com/jayway/JsonPath), then $.Books.History[?(@.Tags[?(@ == 'Indian')] != [])] or more elegantly, use the in operator like this $.Books.History[?('Indian' in @.Tags)]. Tried them both here.

like image 168
riyasvaliya Avatar answered Dec 31 '22 14:12

riyasvaliya