2012-09-17 80 views
2

我在做這樣的事情:渲染的Json Grails的格式

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數據..

回答

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 
+0

謝謝:))得到它.. – ashishashen