LINUX.ORG.RU

Шарада с рекурсиями в JSONPath

 


0

3

Дан JSON:

{
  "a": {
    "a": {
      "a": 1
    }
  }
}
Вот этот парень утверждает, что JSONPath'у
$..a..
соответствует выборка:
[
  {
    "a": {
      "a": 1
    }
  },
  {
    "a": 1
  },
  {
    "a": 1
  },
  1
]

Я всю голову сломал, пытаясь понять, по каким правилам получена эта выборка? Почему выборка именно такая, а не другая? Помогите с интерпретацией выборки, пожалуйста.

★★★★

Последнее исправление: DarkAmateur (всего исправлений: 1)
Ответ на: комментарий от anonymous

Окей, пусть так. Спасибо.

Но вопрос остался открытым))

DarkAmateur ★★★★
() автор топика
Последнее исправление: DarkAmateur (всего исправлений: 1)
Ответ на: комментарий от Miguel

jq – беспомощное неочевидное говно, которое такого тупо не умеет. в примере ТСа все просто, кроме самого примера – достаточно заменить ‘ааааа’ на хотя бы abc чтобы понять, что происходит

anonymous
()
Ответ на: комментарий от anonymous

Проблема не в самом deep scan, а в его применении в качестве последнего правила. Самое забавное, что этот кейс в их доке не расписан.

DarkAmateur ★★★★
() автор топика
Ответ на: комментарий от Miguel

Например:

$ echo '{"a":{"a":{"a":1}}}' | jq '..|objects|.a|..'
{
  "a": {
    "a": 1
  }
}
{
  "a": 1
}
1
{
  "a": 1
}
1
1

Miguel ★★★★★
()
Ответ на: комментарий от anonymous

в примере ТСа все просто, кроме самого примера – достаточно заменить ‘ааааа’ на хотя бы abc чтобы понять, что происходит

Я уже пошёл в эту сторону курить, но пока безуспешно. Тут действительно проблема в определении того, какое конкретное правило deep scan'а, что возвращает. При том, что это самый просто пример.

Особо сообразительные могут попытать счастье с

{"a":{"a":{"a":{"a":{"a":1}}}}}
и
$..a..a..

DarkAmateur ★★★★
() автор топика
24 марта 2022 г.
Ответ на: комментарий от DarkAmateur

В общем, судя по тому, что репа у JSONPath Plus не обновляется, ответа мы, скорее всего, так и не дождёмся.

DarkAmateur ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.