Grails 2.4 - parse json array contained inside a json object to groovy class

513 Views Asked by At

I'm new to grails, the problem i'm trying to solve is pretty simple : my server should receive some json data in a request validate the data and save it to a DB. To my best understanding I use Command Object to validate the data. the problem is that if my Command object contains a list of another class ( a secondary command object ) the parser would put in that field a jsonArray and this would ignore my secondary validation.

Parsing json ->

void handleRequest(){
    def jsonObject = request.JSON
    doSomething(new PrimaryCommandObject(jsonObject))
}

def doSomething(PrimaryCommandObject cmd){
    if (cmd.validate()) {
        respond cmd
    }else{
        cmd.errors.allErrors.each {
            println it
        }
    }
}

Main Command object ->

class PrimaryCommandObject{
    int val1
    List<SecondaryCommandObject> collection
}

Right now in order to bypass this issue I added a setter

Setter ->

void setCollection(JSONArray jsonArray){
    this.collection = []
    jsonArray.each { item ->
        SecondaryCommandObject obj = item as SecondaryCommandObject
        if (obj.validate()) {
            this.collection << obj
        }else {
            obj.errors.allErrors.each {
                println it
            }
        }
}

This doesn't feel right for me, I would except a cleaner simpler way to get it done. this can someone please help ? thanks

0

There are 0 best solutions below