Search code examples
javajsonparsinggroovy

Groovy Json parsing


Hi i am bit new and need help to parse a hash, for example data: in current example,i want to loop through all keys TEST-A,TEST-B,TEST-C and change their value (app-id), for now using jsonslurper i can parse and edit value per key like this:

parsed.'TEST-A'[0].app_id = a

but what i want is to read keys and assign values (these value i will be reading as String)


import groovy.json.*
data = '''
{
    "TEST-A":   [{ "app_id":"aaa" }],
    "TEST-B":   [{ "app_id":"bbb" }],
    "TEST-C":   [{ "app_id":"ccc" }]
}'''

def parsed = new JsonSlurper().parseText(data)
String a= 'test';
parsed.'TEST-A'[0].app_id = a
def result = JsonOutput.toJson(parsed)
println "result: $result"

Solution

  • import groovy.json.*
    data = '''
    {
        "TEST-A":   [{ "app_id":"aaa" }],
        "TEST-B":   [{ "app_id":"bbb" }],
        "TEST-C":   [{ "app_id":"ccc" }]
    }'''
    
    def parsed = new JsonSlurper().parseText(data)
    def a = 665
    parsed.each{k,v-> 
      if(k in ['TEST-A','TEST-B','TEST-C']) v[0].app_id = a
    }
    
    println new JsonBuilder(parsed).toPrettyString()
    

    output:

    {
        "TEST-A": [
            {
                "app_id": 665
            }
        ],
        "TEST-B": [
            {
                "app_id": 665
            }
        ],
        "TEST-C": [
            {
                "app_id": 665
            }
        ]
    }