2011-06-22 60 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()来测试匹配。

相关问题