2017-06-08 2 views
1

J'utilise le cadre RestAssured en Java, dont la documentation contient ce noteéchapper des points dans Groovy GPath

Notez que la syntaxe « chemin JSON » utilise la notation Groovy's GPath et ne doit pas être confondu avec la syntaxe JsonPath de Jayway.

J'ai besoin de valider le JSON suivant:

"_source": { 
    "logSource": { 
     "logger.name": "LogbackLogger", 
    }, 
} 

Et les sélecteurs comme
_source.logSource.logger.name ou
_source.logSource.logger.name[0] retour aucun résultat. Je suppose que cela est dû au point dans la propriété logger.name. Si aucun échappement n'est effectué, logger.name est interprété comme si name était sous logger, ce qui n'est pas vrai. Comment éviter correctement le caractère point dans le GPath, de sorte que logger.name est considéré comme un nom de propriété unique?

Merci!

Répondre

1

Vous avez un problème trivial. Il suffit de l'enrouler entre single quote, c'est-à-dire, 'logger.name' car il y a un caractère spécial.

Voici exemple complet:

def string = """{ "_source": { 
     "logSource": { 
      "logger.name": "LogbackLogger", 
     } 
    } 
}""" 

def json = new groovy.json.JsonSlurper().parseText(string) 
println json.'_source'.logSource.'logger.name' 
+0

Merci pour la réponse! Je l'ai extrapolé au cas de Java et la solution a semblé être triviale en effet. Je n'avais besoin que d'ajouter des guillemets simples: '_source.logSource.'logger.name '[0]' –