Функция ретроцикла JSON-js cycle.js не ожидает, что путь будет иметь индекс массива больше 9.
Один пример пути, который не подвергается ретроциклированию:
$[11]["LegList"][0]["ItenaryList"][0]["Ar"]
Подобный путь, который получает ретроциклирование:
$[9]["LegList"][0]["ItenaryList"][0]["Ar"]
Если вы посмотрите на код cycle.js, вы увидите, что для ретроциклирования пути он должен проверяться на соответствие регулярному выражению.
// [...] A PATH is expected to be
// reasonably short. A PATH is allowed to belong to a very restricted subset of
// Goessner's JSONPath.
// So,
// var s = '[{"$ref":"$"}]';
// return JSON.retrocycle(JSON.parse(s));
// produces an array containing a single element which is the array itself.
var px =
/^\$(?:\[(?:\d?|\"(?:[^\\\"\u0000-\u001f]|\\([\\\"\/bfnrt]|u[0-9a-zA-Z]{4}))*\")\])*$/;
В регулярном выражении px разрешены только индексы массива из одной цифры, а не два.
Поскольку путь не соответствует шаблону, он не заменит ссылку.
Вы можете попробовать использовать локальную копию cycle.js и изменить регулярное выражение px на:
var px = /^\$(?:\[(?:\d+|\"(?:[^\\\"\u0000-\u001f]|\\([\\\"\/bfnrt]|u[0-9a-zA-Z]{4}))*\")\])*$/;
Обратите внимание на отличие от предыдущего регулярного выражения: мы говорим, что теперь мы позволим одну или несколько цифр в индексах массива. Это достигается путем замены одного? символ после первого d с +.
Редактировать: Более новые версии функции ретроцикла cycle.js теперь позволяют индексам массива больше 9.