grails - Generate JSON With JSON-Views -


i trying use json-views in grails 3.1.

i have following controller:

package myapp  basketcontroller {      def index(productfiltercommand cmd) {          [basketlist: service.findallbaskets()]     } } 

and following classes:

package myapp  class basket {     list<basketitem> items }  class basketitem  {     string name  } 

here gson files thought work:

basket/index.gson

import myapp.basket  model {     iterable<basket> basketlist }  json.baskets(basketlist) {     g.render(template: "basket", model: [basket: it]) } 

basket/_basket.gson

import myapp.basket  model {     basket basket }  json.items(basket.items) {      g.render(template: "item", model:[item: it]) } 

basket/_item.gson

import myapp.item  model {     item item }  json g.render(item) 

i want generate json such as:

{     "baskets": [{         "items": [{             "name": "t-shirt"         }, {             "name": "pants"         }]     }, {         "items": [{             "name": "t-shirt"         }, {             "name": "pants"         }]     }] } 

but instead getting:

{   "baskets": [     {},     {}   ] } 

looks bug me. way achieve looking use views shown below. note usage of collection instead of model. file bug sample app used test below.

note usage of template qualified name basket/item. defect.

//index.gson import com.example.basket  model {     iterable<basket> basketitems }  json {     baskets g.render(template: 'basket', collection: basketitems, var: 'basket') } 

//_basket.gson import com.example.basket  model {     basket basket }  json {     items g.render(template: "basket/item", collection: basket.items, var: 'item') } 

//_item.gson import com.example.basketitem  model {     basketitem item }  json g.render(item)  //or if id not required in response /*json {     name item.name }*/ 

Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -