2016-03-24 10 views
1

Projemde, seçilen öğeleri istenen parametreden JSON olarak döndürmeye çalışıyorum.Grails - Seçilen json öğelerini istek parametresinden döndürme isteği

Alan Sınıfı: ricam

http://localhost:8080/myapp/component/showJson?name=name&level=level 
gibi ise

class Component{ 
    String name 
    String level 
    . 
    . 
    . 
} 

Ben http isteği öylesine

http://localhost:8080/myapp/component/showJson?name=name 

gibi sadece

{ 
    name:xyz 
} 

dönmelidir

Sonra

{ 
    name:xyz 
    level:1 
} 

herhangi bir öneriniz takdir dönmelidir.

Güncelleme JSON (Çok düzeyli)

[ 
    {"name":"one","level":0," 
     componentTypes":[ 
       {"name":"one one","level":1, 
        "componentTypes":[ 
         {"name":"one one one","level":2,"componentTypes":[]} 
        ] 
       }, 
       {"name":"one two","level":1,"componentTypes":[]} 
     ] 
    }, 
    {"name":"two","level":0,"componentTypes"[]}, 
    {"name":"three","level":0,"componentTypes":[]} 
] 

class ComponentType { 
    String name 
    Integer level 
    static hasMany = [componentTypes:ComponentType] 
    ComponentType parent 
    static constraints = { 
     parent nullable:true 
    } 
    static mapWith = "mongo" 
} 

Kontrolör eylemi

componentTypeList = ComponentType.createCriteria().list(){ 
      eq("level", 0) 
     } 

cevap

2

params map nesnesi özellikleriyle harita ve sonuca dönmek kesişebilir. Bunu denemedim ama işe yaramayacak bir sebep düşünemiyorum.

def properties = component.properties; 
def result = properties.subMap(params.keySet()) 
render result as JSON 

Güncelleme: biz bileşenleri (öğelerin listesi) varsa

class ComponentType { 

    . 
    . 
    . 



    def toJSON(def params) { 
     def properties = this.properties 
     def result = properties.subMap(params.keySet()) 
     if(this.componentTypes) { 
      result.componentTypes = componentTypes*.toJSON(params) 
     } 
     result 
    } 
} 


def componentTypeList = ComponentType.createCriteria().list(){ eq("level", 0) } 
render componentTypeList*.toJSON(params) as JSON 
+0

ardından öğelerin listesi için –

+0

Güncelleme cevabı devam etmek için nasıl. – JChap

+0

Karşı karşıya olduğum problem çok katmanlı, komponent hasMany bileşenleri –

İlgili konular