从Ruby On Rails中的SOAP响应中解析包含Array的字符串

时间:2012-11-20 23:41:28

标签: ruby-on-rails ruby arrays parsing soap

我在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()之前,我会先提出问题。

非常感谢任何建议。

1 个答案:

答案 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/)

返回相同的结果,仅允许大写单词。如果你得到混合大小写,那么这将失败,并且由于领先的“数组”而使其不区分大小写会失败。