在我的项目中,我试图从请求的参数中将选定的元素作为JSON返回。

域类:

class Component{ 
    String name 
    String level 
    . 
    . 
    . 
} 

我有喜欢的http请求
http://localhost:8080/myapp/component/showJson?name=name 

所以我应该只回来
{ 
   name:xyz 
} 

如果我的要求是
http://localhost:8080/myapp/component/showJson?name=name&level=level 

那我应该回来
{ 
     name:xyz 
     level:1 
} 

任何建议表示赞赏。

更新了JSON(多级)
[ 
   {"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" 
} 

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

请您参考如下方法:

您可以将params贴图与对象属性贴图相交并返回结果。我没有尝试过,但是我想不出它为什么不起作用的原因。

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

更新:
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 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!