Я пытаюсь написать выражение пути JSON, чтобы извлечь все карты и подкладки из структуры JSON. Учитывая JSON:Путь JSON - извлечь все карты
{
"k1":"v1",
"arr": ["1","2","3" ,["7","8"] ],
"submap":
{
"a":"b",
"c":"d"
},
"submap_2":
{
"a_2":"b",
"c_2":"d",
"nested": { "x":"y" }
}
}
Я хочу, чтобы извлечь элементы "submap", "submap_2", "nested"
.
Я пробовал JSONPath такие выражения, как:
$..*[?(@.length()>0 && @.*[0] empty true)]
Это возвращает структуры, которые я хочу, но и возвращает [ "7","8" ]
. Есть ли способ сделать это с помощью JSONPath или это лучше сделать в коде?
(опрятная инструменты тестирования JSONPath здесь: http://jsonpath.herokuapp.com/)
(Конкретная реализация, что я использую это один: https://github.com/jayway/JsonPath)
Имеет ли jq API, который я мог бы использовать? Мне кажется, что это только инструмент командной строки, хотя, возможно, я что-то пропустил. Я использую JSONPath из Java-приложения. – FrustratedWithFormsDesigner
Я успешно использовал Runtime.getRuntime(). Exec (cmd); с 'jq', но я считаю, что потребуется некоторое время, чтобы использовать JNI для доступа к API API jq. Элементы - см. Https://github.com/stedolan/jq/wiki/C-API:-jq-program-invocation; вам может понадобиться создать билет на странице https://github.com/stedolan/jq/issues – peak
Кто-то сделал jq в модуль Python: https://pypi.python.org/pypi/jq – peak