Я использую Goodreads API через источник данных.Я ищу с номером ISBN, и он возвращает результаты, если таковые имеются.Вот как это выглядит, если книга найдена:
<GoodreadsResponse>
<Request>
<authentication>true</authentication>
<key><![CDATA[--redacted--]]></key>
<method><![CDATA[api_book_url]]></method>
</Request>
<book id="6558055">
<title><![CDATA[Mythical Man-Month, The: Essays on Software Engineering, Anniversary Edition]]></title>
<isbn><![CDATA[]]></isbn>
<link>http://www.goodreads.com/book/show/6558055-mythical-man-month-the?utm_medium=api&utm_source=book_link</link>
</book>
</GoodreadsResponse>
Если книга не найдена, она будет такой же, за исключением того, что раздел <book>
отсутствует.Вы можете представить, как выглядит JSON, когда KRL проанализировал этот XML.
Я pick()
извлекаю тег link
из ответа следующим образом:
url = data.pick("$..link.$t");
Если есть раздел <book>
, он работает просто отлично;url
будет строкой.Но если не было секции <book>
, url
будет пустым массивом ([]
).
Я хочу, чтобы действия в моем правиле выполнялись, только если url
- строка.Я пытался использовать такие вещи, как if url != [] then
или url.length()
(который всегда равен нулю), но ни одна из них не работает.
Как определить, когда url
- строка, а когда - пустая?массив?