使用Savon 2.12.0,多个响应到达数组,但是单个响应是哈希

时间:2018-09-07 09:09:34

标签: savon

我正在成功使用Savon调用操作以从SOAP端点获取数据。每个返回的对象都是约15个元素的哈希。

当API需要返回多个对象时,它将以数组形式返回它们,例如: 数据= [{key1a => val1a,key1b => val1b,key1c => val1c},{key2a => val2a,key2b => val2b,key2c => val2c},{key3a => val3a,key3b => val3b,key3c = > val3c}]

这使我可以遍历每个数据的响应,然后将每个散列分解成块。

如果我得到一个响应,它仅返回未包含在数组中的哈希值。这意味着当我对它运行.each时,它正在查看Hash元素(key1a等)

data = {key => val,key2 => val2,key3 => val3}

要解决此问题,我必须对返回的对象运行.class,并且如果它是数组或哈希,则应将其区别对待。

我查看了从API返回的原始数据,并且标记结构看起来相同,所以我怀疑这是Savon行为,而不是API行为。

有什么办法改变这个?不知道这是否是一个“ bug”,但肯定会使我的代码看起来比所需的更加混乱。

1 个答案:

答案 0 :(得分:0)

您可能要使用splat运算符

data = *{ key: 'val', key2: 'val2', key3: 'val3' }

它将哈希强制转换为数组数组。我在Savon资料中经常使用它。

相关问题