You can read about - jmespath - https://jmespath.org/ - Use jsonpath - https://jsonpath.com, you may end up something like this
$.products[?(@.chartName == 'workload-manager')] You can take this free course - https://kodekloud.com/courses/enrolled/635226 to know more about JSON Path. On Wed, Sep 9, 2020 at 12:55 PM [email protected] <[email protected]> wrote: > Tom, > > thanks for that reply, but it is way beyond my current experience. > > but looking at your reply & what i am looking for it doesn't seem to match. > > Under 'products' you can see there are several "groups" using the same > keys but potentially different values, with nothing unique that i can use > to show the difference between them, other the the values for each key. I > want to understand if I can 'sort' through the response body, find the > required 'name' & associate the correct 'status.state' to it. > > Your example only shows one 'group' with clear associations, my response > body has multiple similar keys but different values. > > Thanks for the response though, but I can't see how it would help me. > > > > On Wednesday, 9 September 2020 at 08:14:32 UTC+1 [email protected] wrote: > >> HI >> >> from programming view, you should decode json string to a data structure >> (hash), then access to the hash. >> >> my test: >> >> $ cat a.json >> >> {"a":123,"b":456,"c":789} >> >> >> $ perl -MJSON -le 'open >> FD,"a.json";$str=<FD>;$hash=JSON->new->decode($str);print $hash->{c}' >> >> 789 >> >> >> Thanks. >> >> >> >> >> >> On Wed, Sep 9, 2020 at 2:59 PM [email protected] <[email protected]> >> wrote: >> >>> Morning all, >>> >>> have had this question from a co-worker & not managed to work out how do >>> do it. Any help is greatly appreciated as I can see this coming up several >>> times in the future as well. >>> >>> We have the following response body >>> >>> { >>> >>> "products": [ >>> >>> { >>> >>> "chartName": "action-orchestrator", >>> >>> "installTime": 1599482114, >>> >>> "modifiedTime": 1599482114, >>> >>> "name": "Action Orchestrator", >>> >>> "revision": 1, >>> >>> "status": { >>> >>> "message": "Product is ready", >>> >>> "progressPercentage": 100, >>> >>> "state": "running" >>> >>> }, >>> >>> "version": [ >>> >>> "5.2.0" >>> >>> ] >>> >>> }, >>> >>> { >>> >>> "chartName": "cloudcenter-shared", >>> >>> "installTime": 1599483017, >>> >>> "modifiedTime": 1599483017, >>> >>> "name": "cloudcenter-shared", >>> >>> "revision": 1, >>> >>> "status": { >>> >>> "message": "Product is ready", >>> >>> "progressPercentage": 100, >>> >>> "state": "running" >>> >>> }, >>> >>> "version": [ >>> >>> "5.4.0" >>> >>> ] >>> >>> }, >>> >>> { >>> >>> "chartName": "common-framework", >>> >>> "installTime": 1599469174, >>> >>> "modifiedTime": 1599469174, >>> >>> "name": "Suite Admin", >>> >>> "revision": 1, >>> >>> "status": { >>> >>> "message": "Product is ready", >>> >>> "progressPercentage": 100, >>> >>> "state": "running" >>> >>> }, >>> >>> "version": [ >>> >>> "5.2.0" >>> >>> ] >>> >>> }, >>> >>> { >>> >>> "chartName": "workload-manager", >>> >>> "installTime": 1599483064, >>> >>> "modifiedTime": 1599483064, >>> >>> "name": "Workload Manager", >>> >>> "revision": 1, >>> >>> "status": { >>> >>> "message": "Waiting for product to be ready", >>> >>> "progressPercentage": 67, >>> >>> "state": "creating" >>> >>> }, >>> >>> "version": [ >>> >>> "5.4.0" >>> >>> ] >>> >>> } >>> >>> ], >>> >>> "status": { >>> >>> "message": "Product install success", >>> >>> "progressPercentage": 100, >>> >>> "state": "running" >>> >>> } >>> >>> } >>> >>> >>> >>> What we need to do is search through 'products', & check that the >>> 'status.state' is 'running' for a specific 'name', in our case 'Workload >>> Manager' >>> >>> I can't work out how to provide the search, with the expected result for >>> the co-wokrer to use with an 'until' module. >>> >>> The idea is to only execute the next task, when the 'status.state' >>> changes to 'running'. >>> >>> >>> Hope this makes sense! >>> >>> >>> Regards >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ansible Project" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/ansible-project/14ccb917-6782-48c5-9d9d-89dafb336d47n%40googlegroups.com >>> <https://groups.google.com/d/msgid/ansible-project/14ccb917-6782-48c5-9d9d-89dafb336d47n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "Ansible Project" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ansible-project/c41801fe-83b3-4f23-9cda-6578c1559321n%40googlegroups.com > <https://groups.google.com/d/msgid/ansible-project/c41801fe-83b3-4f23-9cda-6578c1559321n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- Thanks, Abhijeet Kasurde -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAFwWkHqaGKUonuGCDDNtwAdFN_HMj74bXf3mOC_zZxmCFLUK-w%40mail.gmail.com.
