Рекурсивное сопоставление JSONata - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь выполнить рекурсивное сопоставление.

Вот мой пример: https://try.jsonata.org/jN2b0Pt2t

Я в этом простом воспроизводящем устройстве пытаюсь повторно сопоставить исходный «Человек» с «Именем», «Возрастом» и «Родителем» должен состоять только из «n» и «p» (представляющих сопоставленные «Имя» и «Родитель»).

Я не могу понять, почему это не работает.

Если я использую $person($v) в функции $map(..), я получаю ошибку переполнения стека, поэтому я знаю, что происходит рекурсия!

Любая помощь приветствуется.

Спасибо - ты,

Майк

1 Ответ

0 голосов
/ 16 июня 2020

Проблема была полностью моя; следующее сопоставление работает нормально:

(
    $person := function($node) {
        $node ~> $map(function($v, $i) {
            {"n":$v.Name, "p":$person($v.Parent.Person)}
        })
    };

{
    "Person": Person ~> $person($)
}
)
...