2

私はこのようなことをしています:

def prods = Product.executeQuery("select category.id,category.name, avg(competition1Price), avg(competition2Price), avg(onlineCompetitionPrice) from Product group by category.id")
            def output = [[:]]
            prods.each { result ->
                def prod = ['category_id':result[0],'category_name':result[1],'Competition1Price':result[2],'competition2Price':result[3],'onlineCompetitionPrice':result[4]]
                output << prod
                }
            render output as JSON

私が得ている出力は次のようなものです:

 [{},{"category_id":1,"category_name":"Colchones y","Competition1Price":1657.4784,"competition2Price":2071.5,"onlineCompetitionPrice":1242.5}]

私が欲しいのは:このようなもの..

   {collection:[{"category_id":"1","category_name":"Colchones y",so on...]}

誰か助けてください..jsonデータのフォーマットを操作する方法..

4

1 に答える 1

3

それが必要な形式である場合は、次のことを行う必要があります。

def prods = Product.executeQuery("select category.id,category.name, avg(competition1Price), avg(competition2Price), avg(onlineCompetitionPrice) from Product group by category.id")
def output = [collection:[]]
prods.each { result ->
    def prod = ['category_id':result[0],'category_name':result[1],'Competition1Price':result[2],'competition2Price':result[3],'onlineCompetitionPrice':result[4]]
    output.collection << prod
}
render output as JSON

または(おそらくよりきちんとした):

def prods = Product.executeQuery("select category.id,category.name, avg(competition1Price), avg(competition2Price), avg(onlineCompetitionPrice) from Product group by category.id")
def prodlist = prods.collect { result ->
    [ 'category_id': result[0],
      'category_name': result[1],
      'Competition1Price':result[2],
      'competition2Price':result[3],
      'onlineCompetitionPrice':result[4] ]
}
render [ collection: prodlist ] as JSON
于 2012-09-17T11:23:58.887 に答える