2017-10-17 125 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等加載的 「版本」 的所有值.. 添加調試採樣器以查看加載的變量名稱及其相應的值。

希望以上幫助...