Re: Unable to properly tally all keys in nested json

2023-05-13 Thread James McMahon
I tried parsing the stream without forcing it to text, like you had done Paul. I thought maybe that was the source of my problem, so I changed that to this: def root = new JsonSlurper().setType(JsonParserType.LAX).parse(inputStream) I continue to get this error:

Re: Unable to properly tally all keys in nested json

2023-05-13 Thread James McMahon
Thank you Paul. I have integrated this approach into the framework of my NiFi ExecuteScript code, which reads the flowfile content from the stream. I am seeing an undefined method error, and it seems to indicate it cannot digest the json. Does anything jump out at you as an obvious error in my

Re: Unable to properly tally all keys in nested json

2023-05-12 Thread Paul King
Something like this worked for me: def topValuesMap = [:].withDefault{ [:].withDefault{ 0 } } def tallyMap = [:].withDefault{ 0 } def tally tally = { Map json, String prefix -> json.each { k, v -> String key = prefix + k if (v instanceof List) { tallyMap[key] += 1

Re: Unable to properly tally all keys in nested json

2023-05-12 Thread James McMahon
Thank you for the response, Paul. I will integrate and try these suggestions within my Groovy code that runs in a nifi ExecuteScript processor. I'll be working on this once again tonight. The map topValuesMap is intended to capture this: for each key identified in the json, cross-tabulate for

Re: Unable to properly tally all keys in nested json

2023-05-12 Thread Paul King
I am not 100% sure what you are trying to capture in topValuesMap but for tallyMap you probably want something like: def tallyMap = [:].withDefault{ 0 } def tally tally = { Map json, String prefix -> json.each { k, v -> if (v instanceof List) { tallyMap[prefix + k] += 1

Unable to properly tally all keys in nested json

2023-05-11 Thread James McMahon
I have this incoming json: { "name": "John Doe", "age": 42, "address": { "street": "123 Main St", "city": "Anytown", "state": "CA", "zip": "12345" }, "phoneNumbers": [ { "type": "home", "number": "555-1234" }, { "type": "work", "number": "555-5678" } ] } I wish to tally all the keys in this json