2010-04-01 9 views
6

Sto provando a creare JSON da due campi. Di ', ho una lista di oggetti (party), e ho solo bisogno di passare 2 elementi come coppia JSON.rendering JSON in GRAILS con parte degli attributi di un oggetto

def list = getMyList() //it contains 2 party objects 
partyTo = array { 
    for (i in list) { 
     x partyId: i.id 
     y partyName: i.toString()   
    } 
} 

La stringa JSON è

{ 
    "partyTo": [ 
     {"partyId":12}, 
     {"partyName":"Ar"}, 
     {"partyId":9}, 
     {"partyName":"Sr"} 
    ] 
} 

quando estraggo che al client, viene trattato come 4 oggetti. Volevo come 2 oggetti, con il formato seguente.

{ 
    "partyTo": [ 
     {"partyId":12, "partyName":"Ar"}, 
     {"partyId":9 , "partyName":"Sr"} 
    ] 
} 

Ottengo 4 oggetti, probabilmente perché uso un array per creare JSON. Sono nuovo di groovy e JSON, quindi non sono sicuro delle giuste combinazioni di sintassi. Qualsiasi aiuto molto apprezzato. grazie.

risposta

8

Hai ragione, il problema è con la costruzione del tuo array. Per ottenere l'output richiesto è necessario una serie di mappe, una mappa per ogni oggetto, e per ottenere l'oggetto complesso "partyTo" è necessario aggiungere che la lista ad un'altra mappa:

def parties = [ 
      ["id":12 , "name":"Ar", "privateField": "a"], 
      ["id":9 , "name":"Sr", "privateField": "b"] 
    ] 

    def toRender = parties.collect { party-> 
     ["partyId": party.id, "partyName":party.name] 
    } 

    def result = ["partyTo" : toRender] 
    render result as JSON 

In altre parole, a Grails la mappa diventa un oggetto JSON e gli array e gli elenchi di Grails diventano array in JSON

Se si desidera sempre rendere i propri oggetti "party" come questo, si potrebbe prendere in considerazione l'uso di ObjectMarshaller. Maggiori dettagli in questo post su rendering JSON using object marshallers

+0

grazie per il vostro aiuto .. Ho infatti trovato lo stesso post su ObjectMarshaller, e ha funzionato alla grande. Ero ancora curioso della soluzione di cui sopra. molte grazie. I migliori saluti. – bsr

Problemi correlati