【发布时间】:2009-08-07 20:04:20
【问题描述】:
主要问题:在 Groovy 中可以使用哪些运算符、属性等来确定变量的类型?
背景:
我有一个任意深度嵌套的字典数据结构。这是在 Grails 控制器中调用 request.JSON 的结果。我首先想验证某些键是否在字典中,具有适当的类型。我想实现这一点的方法是创建一个原型数据结构并定义一个比较数据结构的方法。比如:
def prototype = [ username: "JennyJeans",
message: [ subject: "Hello World!",
body: "Will write soon."
]
]
当然,这里的Strings的内容无关紧要。然后,在我的行动中,我这样验证:
if(similarDataStructure(prototype, request.JSON)) {
// XXX
} else {
// report error
}
那么,similarDataStructure 方法的作用是什么?在伪代码中:
def similarDataStructure(a, b) {
if(type(a) != type(b)) return false
if(type(a) == dictionary) {
for key in a:
if(!similarDataStructure(a[key], b[key])) return false
}
return true
}
如果您能想到更好的深度验证方法,请告诉我。
【问题讨论】:
-
进一步思考,我发现我真正想要实现的是 Grails 的 JSON 模式验证器