首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ruby中的SOAP散列中获取多个值

从ruby中的SOAP散列中获取多个值
EN

Stack Overflow用户
提问于 2014-08-22 13:47:22
回答 1查看 122关注 0票数 0

我在红宝石里有肥皂反应。我试图从中得到两个或更多的价值。如果只有一个实例,我可以成功地获取我要查找的数据,但如果有多个实例,则会得到以下错误:

代码语言:javascript
复制
can't convert String into Integer (TypeError)

我使用的代码是:

代码语言:javascript
复制
p activecall["GetActiveCallsResult"]["ShoreTelCallStateInfo"]["callInfo"].callID

下面是SOAP响应的一个例子。知道当有多个值时,我如何解析不同的值吗?我想从下面的例子中得到的两个值是70342和68496。

代码语言:javascript
复制
<SOAP::Mapping::Object:0x..fdb7aa9f8 {http://www.ShoreTel.com/ProServices/SDK/Web}GetActiveCallsResult=#
<SOAP::Mapping::Object:0x..fdb7aa8d6 {http://www.ShoreTel.com/ProServices/SDK/Web}ShoreTelCallStateInfo=[#
    <SOAP::Mapping::Object:0x..fdb7aa796 {http://www.ShoreTel.com/ProServices/SDK/Web}callInfo=#
        <SOAP::Mapping::Object:0x..fdb7aa656 {http://www.ShoreTel.com/ProServices/SDK/Web}lineID="20837" 
            {http://www.ShoreTel.com/ProServices/SDK/Web}callID="68496" 
            {http://www.ShoreTel.com/ProServices/SDK/Web}isExternal="true" 
            {http://www.ShoreTel.com/ProServices/SDK/Web}isInbound="false" 
            {http://www.ShoreTel.com/ProServices/SDK/Web}callReason="None" 
            {http://www.ShoreTel.com/ProServices/SDK/Web}connectedID="9+18012624550" 
            {http://www.ShoreTel.com/ProServices/SDK/Web}callerID="1955" 
            {http://www.ShoreTel.com/ProServices/SDK/Web}callerIDName="Joel Lewis" 
            {http://www.ShoreTel.com/ProServices/SDK/Web}calledID="9+13852045017" 
            {http://www.ShoreTel.com/ProServices/SDK/Web}callParties=#
                <SOAP::Mapping::Object:0x..fdb7a7d98 {http://www.ShoreTel.com/ProServices/SDK/Web}CallPartyInfo=[#
                    <SOAP::Mapping::Object:0x..fdb7a7c94 {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="1" 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk" 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742591" 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#
                            <SOAP::Mapping::Object:0x..fdb7a6e8e {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI" 
                                {http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="21" 
                                {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link  (21)">>, #
                    <SOAP::Mapping::Object:0x..fdb7a569c {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="2" 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk" 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742590" 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#
                            <SOAP::Mapping::Object:0x..fdb7a486e {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI" 
                                {http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5" 
                                {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="20" 
                                {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link  (20)">>]> 
                {http://www.ShoreTel.com/ProServices/SDK/Web}callUniqueID="3219803974" 
                {http://www.ShoreTel.com/ProServices/SDK/Web}callGUID="{00030000-E023-537E-3FD3-0010492377D9}"> 
                {http://www.ShoreTel.com/ProServices/SDK/Web}callState="Conferenced" 
                {http://www.ShoreTel.com/ProServices/SDK/Web}callStateDetail=#
                    <SOAP::Mapping::Object:0x..fdb7a20be> {http://www.ShoreTel.com/ProServices/SDK/Web}callProperties=#
                        <SOAP::Mapping::Object:0x..fdb7a1ce0 {http://www.ShoreTel.com/ProServices/SDK/Web}KeyValuePair=#
                            <SOAP::Mapping::Object:0x..fdb7a1bd2 {http://www.ShoreTel.com/ProServices/SDK/Web}propertyName="_ST_CONF_ROLE" 
                                {http://www.ShoreTel.com/ProServices/SDK/Web}propertyValue="CRL:1">>>, #
                    <SOAP::Mapping::Object:0x..fdb7a0a16 {http://www.ShoreTel.com/ProServices/SDK/Web}callInfo=#
                        <SOAP::Mapping::Object:0x..fdb7a08cc {http://www.ShoreTel.com/ProServices/SDK/Web}lineID="20837" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}callID="70342" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}isExternal="true" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}isInbound="false" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}callReason="None" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}connectedID="1955" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}connectedIDName="Joel Lewis" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}callerID="1955" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}callerIDName="Joel Lewis" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}calledID="9+13852045017" 
                            {http://www.ShoreTel.com/ProServices/SDK/Web}callParties=#
                                <SOAP::Mapping::Object:0x..fdb79dbc2 {http://www.ShoreTel.com/ProServices/SDK/Web}CallPartyInfo=#
                                    <SOAP::Mapping::Object:0x..fdb79daa0 {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="1" 
                                        {http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk" 
                                        {http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742591" 
                                        {http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#
                                    <SOAP::Mapping::Object:0x..fdb79cc90 {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI" 
                                        {http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5" 
                                        {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="21" 
                                        {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link  (21)">>> 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}callUniqueID="3219803974" 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}callGUID="{00030000-E022-537E-3FD3-0010492377D9}"> 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}callState="Connected" 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}callStateDetail="Active" 
                        {http://www.ShoreTel.com/ProServices/SDK/Web}callProperties=#
                            <SOAP::Mapping::Object:0x..fdb799e00 {http://www.ShoreTel.com/ProServices/SDK/Web}KeyValuePair=#
                                <SOAP::Mapping::Object:0x..fdb799cfc {http://www.ShoreTel.com/ProServices/SDK/Web}propertyName="_ST_CONF_ROLE" 
                                    {http://www.ShoreTel.com/ProServices/SDK/Web}propertyValue="CRL:1">>>, #
                        <SOAP::Mapping::Object:0x..fdb798e10 {http://www.ShoreTel.com/ProServices/SDK/Web}callInfo=#<SOAP::Mapping::Object:0x..fdb798c9e {http://www.ShoreTel.com/ProServices/SDK/Web}lineID="20837" {http://www.ShoreTel.com/ProServices/SDK/Web}callID="70777" {http://www.ShoreTel.com/ProServices/SDK/Web}isExternal="true" {http://www.ShoreTel.com/ProServices/SDK/Web}isInbound="false" {http://www.ShoreTel.com/ProServices/SDK/Web}callReason="None" {http://www.ShoreTel.com/ProServices/SDK/Web}connectedID="9+13852045017" {http://www.ShoreTel.com/ProServices/SDK/Web}callerID="1955" {http://www.ShoreTel.com/ProServices/SDK/Web}callerIDName="Joel Lewis" {http://www.ShoreTel.com/ProServices/SDK/Web}calledID="9+13852045017" {http://www.ShoreTel.com/ProServices/SDK/Web}callParties=#<SOAP::Mapping::Object:0x..fdb79641c {http://www.ShoreTel.com/ProServices/SDK/Web}CallPartyInfo=[#<SOAP::Mapping::Object:0x..fdb796318 {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="1" {http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk" {http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742591" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#<SOAP::Mapping::Object:0x..fdb795558 {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="21" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link  (21)">>, #<SOAP::Mapping::Object:0x..fdb793d7a {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="2" {http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk" {http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742590" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#<SOAP::Mapping::Object:0x..fdb792f4c {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="20" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link  (20)">>]> {http://www.ShoreTel.com/ProServices/SDK/Web}callUniqueID="3219803974" {http://www.ShoreTel.com/ProServices/SDK/Web}callGUID="{00030000-E022-537E-3FD3-0010492377D9}"> {http://www.ShoreTel.com/ProServices/SDK/Web}callState="Conferenced" {http://www.ShoreTel.com/ProServices/SDK/Web}callStateDetail=#<SOAP::Mapping::Object:0x..fdb790706> {http://www.ShoreTel.com/ProServices/SDK/Web}callProperties=#<SOAP::Mapping::Object:0x..fdb79030a {http://www.ShoreTel.com/ProServices/SDK/Web}KeyValuePair=#<SOAP::Mapping::Object:0x..fdb7901c0 {http://www.ShoreTel.com/ProServices/SDK/Web}propertyName="_ST_CONF_ROLE" {http://www.ShoreTel.com/ProServices/SDK/Web}propertyValue="CRL:1">>>]>>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-22 14:16:32

从错误消息看,当有多个结果时,似乎有一个数组,因为它在[]中寻找一个整数,而不是字符串。

您将需要循环遍历数组并提取所需的元素。

我猜想数组是ShoreTelCallStateInfo,但从数据转储中我并不完全清楚,因为它似乎在中间被截断。

类似于:

代码语言:javascript
复制
activecall["GetActiveCallsResult"]["ShoreTelCallStateInfo"].each do |info|
  p info["callInfo"].callID  
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25448574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档