ClassCastException:SoapPrimitive不能转换为SoapObject(显然这里没有SoapPrimitive)

时间:2014-06-08 05:32:39

标签: android json serialization ksoap2 classcastexception

我使用SOAP based web-service消费ksoap2,并从网络服务接收JSON response,我将其存储在SoapObject中。

下一步是解析JSON 。为此,我尝试从响应SoapObject中获取每个property并将其存储在另一个SoapObject中,以便进一步处理(例如获取namevalue等)。 / p>

SoapObject soapObjectEach= (SoapObject) postResult.getProperty(i); 

但是我在这个语句中得到一个异常 java.lang.ClassCastException:org.ksoap2.serialization.SoapPrimitive无法强制转换为org.ksoap2.serialization.SoapObject

postResult是一个SoapOject。这表明postResult.getProperty()可能会返回一个SoapPrimitive?但我几乎可以肯定事实并非如此,因为documentation说“返回所需的财产”

那么有人可以提出一些建议吗? 我已经看到了有关此问题的其他问题(12)但没有达到一个满意的答案。

1 个答案:

答案 0 :(得分:1)

让我们对你的代码进行对角化:

SoapObject soapObjectEach= (SoapObject) postResult.getProperty(i); 

正如你所说postResult是一个soapobject。从getproperty的文档中可以看出:

getProperty

public java.lang.Object getProperty(int index)
Returns a specific property at a certain index.
Specified by:
getProperty in interface KvmSerializable
Parameters:
index - the index of the desired property
Returns:
the desired property

getproperty返回索引处的属性,而不是可以始终强制转换为soapobject的东西。从您的异常中我们可以看到它返回了一个soapprimitive类型的对象。所以解决方案类似于this post