2017-10-17 143 views
0

我尝试使用JSONPath获取名为version(第一个)的变量的值,但显然我的解决方案根本无法工作。 我试图使用像$ ..版本或$ .container ..版本的表达式。如何从json响应中获取数据作为变量

我的回应如下:

你粘贴的JSON的
{ 
    "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" : { } 
    } 

回答

1

首先是无效的:它缺少2个大括号末(根对象和container对象不是封闭的)。如果这不是SO上的复制/粘贴错误,但是实际的数据问题,则可能需要首先对其进行更正。

如果我理解正确的,你想从这个字段变量中的值:

"version" : 8 

如果是这样,JSON路径应该是:

$.container.version 

container.version 

如果你喜欢绝对的相对路径。

$..version$.container..version将路径(在periodicity属性"version" : 0,并且一个是内部_VALIDATION一个对象)选择多个版本字段

0

下面的表达式将获得您所希望的结果。 变量:ContainerVersion JSON表达:$ .. container.version 现在存储的版本值可以使用被称为:$ {} ContainerVersion

如果有多个 “版本” 标签在那里,那么你可以通过具有以下表达式, $ .. container.version [*] 可以调用变量$ {} VAR_1$ {} VAR_2等加载的 “版本” 的所有值.. 添加调试采样器以查看加载的变量名称及其相应的值。

希望以上帮助...