2013-09-20 3 views
0

Я хочу знать, можно ли проверить выражение JSONPath.Можно ли проверить выражение JSONPath?

Мой JSONPath является $.phoneNumbers[:1].type

И мой JSON выглядит следующим образом:

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

Я хочу знать, если я использую/действительное выражение JSONPath правильно.

+0

«Правый» и «действительный» - это две разные вещи. Вероятно, вы получите ошибку, если попытаетесь использовать недопустимый JSONPath, но вы единственный, кто может оценить, является ли JSONPath «правильным», поскольку никто, но вы знаете, что вы пытаетесь выбрать своим путем. – carols10cents

ответ

0

Вы можете добраться до http://jsonpath.curiousconcept.com/ и попробовать его там.

Или вы можете сделать это на языке программирования.

Вот как вы могли бы сделать это в Ruby, используя jsonpath перл:

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) 
0

@Parag А - Я просто написал библиотеку JavaScript, с которым вы можете запросить структуру JSON с помощью XPath (который стандартизирован в противоположность к 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, и метод поиска всегда возвращает массив с соответствующими выборами (пустой массив, если совпадений не найдено).