g1ant: jsonpath с методом length () не реализован

У меня проблема с получением элементов массива. Функция jsonPath "length ()" не реализована в g1ant, потому что выдает исключение "Ожидается индекс массива". Ниже приведен образец скрипта g1ant для тестирования.

addon core version 4.103.0.0
addon language version 4.104.0.0
♥jsonImage = ⟦json⟧‴{ "book" : [ { "name" : "Bambi"} , { "name" : "Cinderella" } ] }‴
♥aaa = ♥jsonImage⟦$.book.length()⟧
dialog ♥aaa

Есть ли другие решения, связанные с длиной массива?


person Jakub Kosmala    schedule 19.11.2019    source источник


Ответы (1)


Невозможно получить количество элементов массива json так, как вы пытаетесь. G1ANT использует библиотеку Newtonsoft.Json для выбора токенов json, где они не допускают выражения типа .length(), как вы можете прочитать здесь.

Вот как можно обойти эту проблему.

♥jsonImage = ⟦json⟧‴{ "book" : [ { "name" : "Bambi"} , { "name" : "Cinderella" } ] }‴

♥jsonArrLength = 0
♥hasExceptionOccurred = false

while ⊂!♥hasExceptionOccurred⊃
    try errorcall NoMoreElements
        ♥test = ♥jsonImage⟦book[♥jsonArrLength]⟧
        ♥jsonArrLength = ♥jsonArrLength + 1
    end try
end while

dialog ♥jsonArrLength

procedure NoMoreElements
    ♥hasExceptionOccurred = true
end procedure
person Wiktoria Prusik    schedule 20.11.2019