2014-09-25 80 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