2011-06-22 59 views
2

我通過數據源使用Goodreads API。我使用ISBN號搜索,如果有任何結果,它會返回結果。這裏是什麼樣子,如果這本書被發現:如何判斷pick()的結果是否是字符串

<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&amp;utm_source=book_link</link> 
    </book> 
</GoodreadsResponse> 

如果沒有找到這本書,這將是除了<book>部分不存在一樣。一旦這個XML已經被KRL解析,你可以想象JSON的樣子。

pick()荷蘭國際集團的link標籤了這樣的迴應:

url = data.pick("$..link.$t"); 

如果有<book>部分,即工作得很好; url將是一個字符串。但是如果沒有<book>部分,url將是一個空數組([])。

如果url是字符串,我只希望我的規則中的操作能夠運行。我嘗試過使用諸如if url != [] thenurl.length()(它總是爲零),但這些都不起作用。

如何知道url是字符串還是空數組?

回答

2

直接回答你的問題是.typeof(),文檔號here

實施例條件和動作:

if url.typeof() eq 'array' then 
    noop() 

另一種方式來處理這種情況是在true通過作爲傳感器的第二個參數,這將導致答案總是是一個數組。這在pick的文檔中有描述。

由於它始終是一個數組,因此您可以使用.length()來測試匹配。

相關問題