0

1 つの Web サービスの Soap 呼び出しを行うだけで、以下のようなデータを持つ 1 つの文字列で応答が得られます。

    [Map{
         item=anyType{key=customer_id; value=1; }; 
         item=anyType{key=created_at; value=2007-08-30 23:23:13; }; 
         item=anyType{key=updated_at; value=2008-08-08 12:28:24; }; 
         item=anyType{key=increment_id; value=000000001; }; 
         item=anyType{key=store_id; value=1; }; 
         item=anyType{key=website_id; value=1; }; 
         item=anyType{key=default_billing; value=274; }; 
         item=anyType{key=default_shipping; value=274; }; 
         item=anyType{key=disable_auto_group_change; value=0; }; 
         item=anyType{key=email; value=john.doe@example.com; }; 
         item=anyType{key=firstname; value=John; }; 
         item=anyType{key=group_id; value=1; }; 
         item=anyType{key=lastname; value=Doe; }; 
         item=anyType{key=middlename; value=; }; 
         item=anyType{key=password_hash; value=2049484a4020ed15d0e4238db22977d5:eg; }; 
         item=anyType{key=prefix; value=; }; 
         item=anyType{key=suffix; value=; }; 
         item=anyType{key=taxvat; value=; };

}]

JSON、Vector、Enumeration、Map、HashMap .....など、この応答を解析するために非常に多くのリソースを試しましたが、この応答を解析できません。

これは JSON 応答ではありませんが、JSON でデータを解析しようとしましたが、できません...

そのような応答を解析する最良の方法は何ですか?

誰もこれを行う方法を知っていますか?

ありがとう......

4

1 に答える 1

1

次のように、新しいクラスSoapMapを作成できます。

class SoapMap
{
    SoapObject soapObject;
    Map<String, String> pairs = new HashMap<String, String>();

    public SoapMap(SoapObject soapObject)
    {
        this.soapObject = soapObject;
        for(int i=0; i<soapObject.getPropertyCount(); i++)
        {
            String str = soapObject.getProperty(i).toString();
            String key = str.split("key=")[1].split(";")[0];
            String value = str.split("value=")[1].split(";")[0];            
            pairs.put(key, value);
        }
    }

    public String getValue(String key)
    {
        return pairs.get(key);
    }
}

次のように SoapMap を使用します。

SoapMap soapMap = new SoapMap(yourSoapObjectResponse);
int customer_id = Integer.parseInt( soapMap.getValue("customer_id") );
String firstname = soapMap.getValue("firstname");
String email = soapMap.getValue("email");
于 2016-01-18T09:54:43.837 に答える