是否可以验证JSONPath表达式?

时间:2013-09-20 17:24:27

标签: jsonpath

我想知道是否可以验证JSONPath表达式。

我的JSONPath是$.phoneNumbers[:1].type

我的json如下:

{      
  "phoneNumbers": [
     {
       "type"  : "iPhone",
       "number": "0123-4567-8888"
     },
     {
       "type"  : "home",
       "number": "0123-4567-8910"
     }
  ]
}

我想知道我是否正在使用正确/有效的JSONPath表达式。

2 个答案:

答案 0 :(得分:0)

你可以到http://jsonpath.curiousconcept.com/并在那里试一试。

或者你可以用编程语言来做。

以下是使用jsonpath gem:

在Ruby中执行此操作的方法
require 'jsonpath'

data=<<-EOS
{      "phoneNumbers":
 [
     {
       "type"  : "iPhone",
       "number": "0123-4567-8888"
     },
     {
       "type"  : "home",
       "number": "0123-4567-8910"
     }
 ]
}
EOS

JsonPath.new("$.phoneNumbers[:1].type").on(data)

答案 1 :(得分:0)

@Parag A - 我刚刚编写了一个javascript库,您可以使用它来查询带有XPath的JSON结构(与JSONPath相反,它是标准化的)。使用此XPath评估程序,您可以粘贴JSON结构并就地验证XPath查询:

http://www.defiantjs.com/#xpath_evaluator

将您的问题和答案放在javascript代码中,它看起来像这样:

var obj = {      
  "phoneNumbers": [
     {
       "type"  : "iPhone",
       "number": "0123-4567-8888"
     },
     {
       "type"  : "home",
       "number": "0123-4567-8910"
     }
  ]
};

var qry = JSON.search(obj, '//phoneNumbers[1]/type');
// qry[0] = 'iPhone'

Defiant扩展了全局对象JSON,搜索方法总是返回一个匹配选择的数组(如果没有找到匹配则为空数组)。