Came attraverso questo strano risultato oggi cercando di rendere un elenco di oggetti come JSON in Grails 2.0.4 ... (so che mi pentirò di chiedere questo a causa di qualcosa proprio sotto il mio naso ... aggiornato 5/26, la mia previsione era corretta, vedi sotto :-))Rendering 'as JSON' in Grails con operatore condizionale non renderizzato correttamente
Questo funziona bene; il JSON rende correttamente nel browser ...
def products = [] //ArrayList of Product objects from service
def model = (products) ? [products:products] : [products:"No products found"]
render model as JSON
..quindi perchè non lo fa questa versione più breve, senza model
lavoro?
def products = []
render ((products) ? [products:products] : [products:"No products found"]) as JSON
Il JSON risultante dal codice di cui sopra è uscita come una singola riga di testo, così ho il sospetto che non è raccogliendo as JSON
, ma è tra parentesi correttamente, quindi qual è il problema?
[ 'prodotti': [com.test.domain.Product: null, com.test.domain.Product ...]
Dannazione, sto invocando 'render()' senza nemmeno rendersene conto, thx, ho finito per andare con questo utilizzando gli elementi della soluzione, è un poco più breve ed evita di specificare il tipo di contenuto due volte: 'render (contentType:" text/json ") {[prodotti: (prodotti?:" Nessun prodotto trovato ")]} – raffian
Funzionerebbe anche:' render ((prodotti ? [prodotti: prodotti]: [prodotti: "Nessun prodotto trovato"]) come JSON) ' –
@JamesKleeh Ace nella buca, bello! .. ed esattamente quello che stavo cercando! – raffian