2017-10-17 5 views
0

J'ai essayé d'obtenir la valeur d'une variable nommée version (la première) en utilisant JSONPath mais apparemment ma solution ne fonctionnait pas du tout. J'ai essayé d'utiliser une expression comme $ .. version ou $ .container..version.Comment obtenir des données à partir d'une réponse json en tant que variable

Ma réponse ci-dessous:

{ 
    "container" : { 
    "version" : 8, 
    "updatedBy" : "user111", 
    "updatedOn" : "2017-08-17T16:00:24Z", 
    "id" : 16, 
    "dataEnt" : { 
     "dataEntid" : "dataEntid-000032", 
     "dataEnttype" : "21" 
    }, 
    "impact" : [ ], 
    "operationalFocus" : false, 
    "periodicity" : { 
     "version" : 0, 
     "updatedBy" : "unknown", 
     "updatedOn" : "2017-03-31T16:44:08Z", 
     "step" : 1, 
     "period" : 31084132, 
     "_VALIDATION" : { 
     "valid" : true, 
     "saveAll" : true, 
     "reasons" : [ ], 
     "details" : { 
      "period" : { 
      "valid" : true, 
      "saveAll" : true, 
      "risks" : [ ], 
      "rmiCode" : null, 
      "rmiMessage" : null 
      }, 
      "version" : { 
      "valid" : true, 
      "saveAll" : true, 
      "risks" : [ ], 
      "rmiCode" : null, 
      "rmiMessage" : null 
      }, 
      "step" : { 
      "valid" : true, 
      "saveAll" : true, 
      "risks" : [ ], 
      "rmiCode" : null, 
      "rmiMessage" : null 
      } 
     }, 
     "rmiCode" : null, 
     "rmiMessage" : null 
     }, 
     "_META" : { } 
    } 

Répondre

1

d'abord tous les JSON que vous avez collé est invalide: il manque 2 accolades à la fin (objet racine et container objets ne sont pas fermés). Si ce n'est pas une erreur de copier/coller sur SO, mais un problème de données réel, vous devrez peut-être corriger cela en premier.

Si je comprends bien, vous voulez la valeur de ce champ dans la variable:

"version" : 8 

Si oui, chemin JSON doit être:

$.container.version 

ou

container.version 

si vous préférez le chemin relatif à l'absolu.

chemin comme $..version ou $.container..version sélectionnera plusieurs champs de version ("version" : 0 dans periodicity la propriété, et celui qui est un objet à l'intérieur _VALIDATION)

0

L'expression suivante vous obtiendrez le résultat souhaité. variable: ContainerVersion JSON Expression: $ .. container.version maintenant la valeur de version stockée peut être appelée à l'aide: $ {} ContainerVersion

Si plusieurs "version" balises sont là, alors vous pouvez charger toutes les valeurs de "version" en ayant l'expression suivante, $ .. container.version [*] vous pouvez appeler la variable $ {VAR_1}, $ {} VAR_2 etc .. Ajouter un échantillonneur de débogage pour voir les noms des variables chargées et leurs valeurs correspondantes.

Espérons que ce qui précède aide ...