2013-12-16 10 views
0

Я пишу веб-приложение Grails, чтобы принять входные данные ниже и переформатировать его в выходной формат ниже, который затем можно использовать для рисования fancyTree. Я создал класс контроллера с кодом, указанным ниже, за исключением следующего. Как я могу выполнить итерацию, чтобы сделать формат, похожий на выходной формат, показанный ниже? Я посмотрел, как Groovy делает каждый синтаксис, но как я могу использовать его для добавления ингредиентов?Grails Создание выходного формата JSON

фрагмент кода:

def list(){ 

    def results = recipies.list() 

    def recipiesContents = [:] //Test List 

    recipiesContents=[] 

    for (record in results){ 
     test.add([folder:true, title: results.Name, key: results.key 
     ]) 
    } 


    //render response types 
    withFormat { 
     html test 
     json {render test as JSON} 
     xml {render test as XML} 
    } 
} 

Входные данные:

{ 
recipies :[ 

{key: "1", 
category:"Tuna Sandwich" 
data:[{some data}], 
ingredients: [ 
    {item_name:"mayo", 
     brand: "My Own Brand" 
    }, 
    { 
     item_name: "Tuna". 
     brand: "Bumble Bee" 
    } 
]}, 
{key: "2", 
category:"Chicken Noodle Soup" 
data:[{some data}], 
ingredients: [ 
    {item_name:"condensed chicken soup", 
     brand: "Campbell" 
    }, 
    { 
     item_name: "Noodles". 
     brand: "Top Ramen" 
    } 
]} 

] 
} 

Выходные данные:

[ 
{ 
    title: "Tuna Sandwich" 
    ingredients: [ 
     {title: "Tuna"}, 
     {title: "mayo"} 
    ] 
}, 
{ 
    title: "Chicken Noodle Soup", 
    ingredients: [ 
     {title: "condensed chicken soup"}, 
     {title: "Noodles"} 
    ] 
} 
] 

ответ

0

Вы пробовали:

for (record in results){ 
    def ingredients = [:] 
    for (ingredient in record.ingredients) { 
     ingredients.add([title: ingredient.item_name) 
    } 
    test.add([title: results.category, ingredients: ingredients 
    ]) 
} 
Смежные вопросы