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

问题描述 投票:0回答:1

我成功调用了一个使用Savon的操作来从SOAP端点获取数据。每个返回的对象都是~15个元素的哈希值。

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

这让我可以使用data.each迭代响应,然后拆分块中的散列。

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

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

为了解决这个问题,我必须对返回的对象运行一个.class,如果它是一个数组或一个哈希,则对它进行不同的处理。

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

有什么办法改变这个吗?不确定它是否是一个“bug”,但肯定会使我的代码看起来比它需要的更麻烦。

savon
1个回答
0
投票

您可能想要使用splat运算符

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

它将哈希强制转换为数组数组。我在Savon的消息来源中经常使用它。

© www.soinside.com 2019 - 2024. All rights reserved.