groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brandon Metcalf <bwmetc...@gmail.com>
Subject Re: finding value of key at same level as another key
Date Tue, 27 Nov 2018 21:37:13 GMT
Perfect.  Thank you very much.

On Tue, Nov 27, 2018 at 12:54 PM Winnebeck, Jason <
Jason.Winnebeck@windstream.com> wrote:

> *def *parsed = *new *JsonSlurper().parseText(json)
> *assert *parsed.status.group ==
> *'group1' **assert *parsed.status.partitions.find { it.topic == *'topic1'
> *&& it.partition == 0 }?.end?.lag == 0
>
>
>
> Putting your JSON into a string variable “json”, the above asserts pass.
> The group was not put into a find because the status field is an object,
> not an array, so you’d check it with a normal if statement rather than
> find. The result is the end.lag field of the first partition found matching
> the topic and partition number, or null if no partition was found, or the
> first partition found does not have the field, or if the field exists but
> is null.
>
>
>
> If you want to limit only to partitions with lag defined, you can change
> the search accordingly:
>
> *assert *parsed.status.partitions.find { it.topic == *'topic1' *&& it.partition
== 0 && it.end?.lag != *null *}?.end?.lag == 0
>
>
>
> Jason
>
>
>
> *From:* Brandon Metcalf <bwmetcalf@gmail.com>
> *Sent:* Tuesday, November 27, 2018 12:20 PM
> *To:* users@groovy.apache.org
> *Subject:* finding value of key at same level as another key
>
>
>
> Hello,
>
>
>
> I have the following json
>
>
>
> {
>
>   "status": {
>
>     "group": "group1",
>
>     "partitions": [
>
>       {
>
>         "topic": "topic1",
>
>         "partition": 0,
>
>         "start": {
>
>           "offset": 0,
>
>           "timestamp": 1543337772415,
>
>           "lag": 0,
>
>           "max_offset": 0
>
>         },
>
>         "end": {
>
>           "offset": 0,
>
>           "timestamp": 1543337812000,
>
>           "lag": 0,
>
>           "max_offset": 0
>
>         }
>
>       }
>
>     ]
>
>   }
>
> }
>
>
>
> I'm looking for a way in groovy to find the value of
> status.partitions.end.lag when I know the values of status.group,
> status.partitions.topic and status.partitions.partition?  I may need to
> rethink my approach to how I think I should parse this json, but hopefully
> there is an easy way to do this.
>
>
>
> Also, there can be multiple levels of the values that I know.  Just
> showing one for simplicity.
>
>
>
> Thanks.
>
>
>

Mime
View raw message