2014-09-25 44 views
0

我有以下JSON有效載荷:JSON路徑表達式

{ 
    "inputs" : [{ 
      "attributeX" : [{ 
        "id1" : "value11", 
       }, { 
        "id1" : "value12", 
       } 
      ], 
      "attributeY" : [{ 
        "id" : "valueY1", 
        "attributeZ" : [{ 
          "pathZ" : "/Path1/Path2[00163E038C2E1EE299C1C394370BCFA0]/Description", 
          "value" : "valueXYZ", 
         } 
        ], 
       } 
      ] 
     } 
    ] 
} 

我想編寫一個JSON路徑表達式,這樣我想pathZ的價值。但[]中的部分值是動態的。無論如何在下面的JSON路徑表達式中指定一個通配符?

$.inputs.[*].attributeY.[*].attributeZ[?(@.pathZ=='/Path1/Path2**<HOW_CAN_I_SPECIFY_A_WILDCARD_HERE>**/Description')].value 

回答

1

您可以在JSON路徑表達式中使用正則表達式來匹配PathZ值的開始和結束,而不匹配中間值。這是表達會是什麼樣子:

$.inputs.[*].attributeY.[*].attributeZ[?(new RegExp('^/Path1/Path2.*/Description$').test(@.pathZ))].value 

我已經測試這個使用在線JSON查詢工具在這裏:http://www.jsonquerytool.com/sample/jsonpathregex