JSONpath
-
{
{
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J.R.R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
},
},
"expensive": 10
}Пытаюсь по $..book[?(@.author=='Nigel Rees')] получить
[
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
}
]Ничего не получается, тестирую тут jsonpath.com/.
В чём ошибка подскажите пожалуйста.
-
@Kinokio для начала использовать валидный JSON. То что вы скинули имеет некорректный формат.
-
@Oyasumi-Punpun хорошо вот оригинальный
test.txt
Мне нужно достать данные автора по id 936787472388595723
Я просто не хотел вываливать эту большую крякозябру, чтоб глаза у юзеров не упали, но видимо воспроизвести формат у меня не вышло
-
@Kinokio так как сообщений от одного автора может быть несколько, потом берете из получившегося списка первый элемент и всё:
$[?(@.author.id === '936787472388595723')].author
-
@Oyasumi-Punpun спасибо, а почему тут 3 равно? "==="
-
@Kinokio можете два использовать, это просто строгое сравнение.
-
@Oyasumi-Punpun а если мне нужно сравнение как contains? Тоесть не точное? Можете пример скинуть, я был бы благодарен
-
@Kinokio вы можете в круглых скобках писать любой JS код, главное, чтобы BAS поддерживал его:
$[?(@.author.id.indexOf('93678747') >= 0)].author
-
@Oyasumi-Punpun спасибо
-
@Oyasumi-Punpun а как я могу получить content, по id автора?
Получается что content находится выше по иерархии, а id в авторе, так вообще возможно?
-
$[?(@.author.id === '936787472388595723')].content
-
@Oyasumi-Punpun слушай у тебя есть телега? Ты хорошо знаешь JSON, я бы мог накинуть тебе на пиво, и временами спрашивать совета, я просто новичок в этом деле, буквально сегодня стал изучать