Question principale: Quels opérateurs, propriétés, etc. peuvent être utilisés pour déterminer le type de variables dans Groovy?Types de types dynamiques dans Groovy
Contexte:
J'ai une structure de dictionnaire de données arbitrairement profondément imbriquées. C'est le résultat de l'appel request.JSON
dans un contrôleur Grails. Je voudrais d'abord vérifier que certaines clés sont dans le dictionnaire, avec les types appropriés. La façon dont je voudrais mettre en œuvre ceci est en créant une structure de données prototypique et en définissant une méthode pour comparer les structures de données. Quelque chose comme:
def prototype = [ username: "JennyJeans",
message: [ subject: "Hello World!",
body: "Will write soon."
]
]
Bien sûr, le contenu des chaînes ici n'a pas d'importance. Puis, dans mes actions, je valide comme ceci:
if(similarDataStructure(prototype, request.JSON)) {
// XXX
} else {
// report error
}
Alors, qu'est-ce que la méthode similarDataStructure
faire? Dans pseudocode:
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
}
Si vous pouvez trouver une meilleure façon de faire une validation approfondie, faites le moi savoir.
En plus la pensée, je l'ai découvert ce que je suis vraiment en train de mettre en œuvre un schéma JSON validateur pour Grails –