You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:13:12