我在Ruby on Rails中使用Savon向SOAP接口发送请求。
我得到的问题是结果以包含数组的字符串形式返回:
数组([0] => ACCESS [1] => ALLEY [2] => ANCHORAGE [3] =>公寓 [4] => ARCADE [5] => AVENUE [6] =>银行[7] => BAY [8] => BEACH [9] => 腰带[10] => BEND [11] => BOARDWALK [12] => BOULEVARD [13] => BOULEVARDE)
我尝试使用Savon函数 .to_hash 解析结果,但这部分仍然是一个字符串。 我也尝试在字符串上使用 Nori.parse ,但这会返回一个空哈希。
有没有人在使用SOAP接口时遇到类似的问题?将此解析为Ruby数组的最佳方法是什么?
我认为在开始使用正则表达式编写hacky代码以将其置于正确的格式,然后在其上调用 eval()之前,我会先提出问题。
非常感谢任何建议。
答案 0 :(得分:1)
如果您的结果与示例完全相同,那么我就是这样做的方式之一:
string = 'Array ( [0] => ACCESS [1] => ALLEY [2] => ANCHORAGE [3] => APARTMENTS [4] => ARCADE [5] => AVENUE [6] => BANK [7] => BAY [8] => BEACH [9] => BELT [10] => BEND [11] => BOARDWALK [12] => BOULEVARD [13] => BOULEVARDE)'
string.scan(/=> ([A-Z]+)/i).flatten
=> ["ACCESS", "ALLEY", "ANCHORAGE", "APARTMENTS", "ARCADE", "AVENUE", "BANK", "BAY", "BEACH", "BELT", "BEND", "BOARDWALK", "BOULEVARD", "BOULEVARDE"]
或:
string.scan(/\b[A-Z]+\b/)
返回相同的结果,仅允许大写单词。如果你得到混合大小写,那么这将失败,并且由于领先的“数组”而使其不区分大小写会失败。