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
Post a Comment