Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Maxx 02.12.2019 02:54 / 02.12.2019 02:58
Исправляется более уникальными именами на ключ-значение:Имхо, тогда уж что-нибудь совсем маловероятное, типа _key_149571943;_value_149571943, т.к. _key и _value все таки применяются, а ошибку эту не зная ее природы фиг найдешь, если ключи совпали.
^hash.foreach[_key;_value]{
^json:string[^select[$hash][key;value]($key eq 'a')[ $.recursive(true) ]][ $.indent(true) ]Вернет пустой хэш. Почему понятно, $condition в ветке с рекурсией мы не проверяем, а просто прокидываем вглубь. Поэтому ключи, в которых не значения, а вложенные хэши мы просто пропускаем. Если проверить $condition до рекурсии, то мы получим ошибку несовпадения типов $value, в общем случае
^json:string[^select[$hash][key;value]($key eq 'b' && $value == '3')[ $.recursive(true) ]][ $.indent(true) ]Упадет, когда в ключе окажется хэш, а
[code]^json:string[^select[$hash][key;value]($key eq 'a' && $value.c == '1')[ $.recursive(true) ^rem{в этом случае, кстати, если условие выполнилось - рекурсировать нам не надо, а просто вернуть ветку полностью} ]][ $.indent(true) ]наоборот, когда строка. Единственное что пока пришло в голову, завернуть ^if($condition) в try, и выполнять отдельную ветку