如何提取SoapObject的属性名称为字符串?获取属性名而非属性值的技术求助
解决SoapObject获取属性名称的问题
你现在的问题核心是搞混了SoapObject的两个方法:getProperty(i)返回的是属性对应的值,而你需要的属性名称得用getPropertyName(i)来获取。
原来的代码里,你把属性值(也就是true)当成了属性名称去做switch判断,这当然得不到正确的结果。调整一下代码逻辑,分开获取名称和值就可以了:
SoapObject response = (SoapObject) webService.getResponse(); for (int i = 0; i < response.getPropertyCount(); i++) { // 先拿到属性名称 String propName = response.getPropertyName(i); // 再拿到对应的属性值并转为boolean类型 boolean modAllowed = Boolean.parseBoolean(response.getProperty(i).toString()); if (modAllowed) { String mod = propName; switch (mod) { case "ChassisReceiving": mod = "Chassis Receiving"; break; case "JobOrderIssuing": mod = "Job Order Issuing"; break; // 继续补充其他属性的case } AddModule(response, mod); } }
这样修改后,propName就能正确拿到你需要的ChassisReceiving、JobOrderIssuing这些属性名了,再根据值是否为true来决定是否处理,逻辑就通顺了。
另外提个小建议:循环条件里i <= response.getPropertyCount()-1可以简化成i < response.getPropertyCount(),这样更符合Java循环的常规写法,也不容易出错。
内容的提问来源于stack exchange,提问作者Patrick Davis
相关产品推荐
相关产品推荐

