我正在通过数据源使用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>
部分不存在外,它将是相同的。您可以想象一旦KRL解析了这个XML后JSON的样子。
我pick()
将link
标记排除在响应之外:
url = data.pick("$..link.$t");
如果有<book>
部分,则效果很好; url
将是一个字符串。但如果没有<book>
部分,url
将是一个空数组([]
)。
如果url
是一个字符串,我只希望我的规则中的操作能够运行。我尝试过使用像if url != [] then
或url.length()
这样的东西(总是为零),但这些都不起作用。
如何判断url
何时是一个字符串,何时是一个空数组?