0

hereから JSON で値を解析するためのコードに従いましたが、return ステートメントで問題が発生します。解析結果を return ステートメントに入れたいと思います。どうやってするか?


これが私のコードです:

public String MASUK(String user, String password)
    {
        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);

        PropertyInfo pi = new PropertyInfo();
        pi.setName("ccduser");
        pi.setValue(user);
        pi.setType(String.class);
        request.addProperty(pi);

        PropertyInfo pi2 = new PropertyInfo();
        pi2.setName("password");
        pi2.setValue(password);
        pi2.setType(String.class);
        request.addProperty(pi2);


        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;

        envelope.setOutputSoapObject(request);

        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
        try
        {
            httpTransport.call(SOAP_ACTION, envelope);
            SoapObject resultSOAP = (SoapObject) envelope.bodyIn;

            /* gets our result in JSON String */
            String ResultObject = resultSOAP.getProperty(0).toString();

            resultSOAP = (SoapObject) envelope.bodyIn;
            ResultObject = resultSOAP.getProperty(0).toString();

            if (ResultObject.startsWith("{")) { // if JSON string is an object
                JSONObj = new JSONObject(ResultObject);
                Iterator<String> itr = JSONObj.keys();
                while (itr.hasNext()) {
                    String Key = (String) itr.next();
                    String Value = JSONObj.getString(Key);
                    BundleResult.putString(Key, Value);
                    // System.out.println(bundleResult.getString(Key));
                }
            } 

            else if (ResultObject.startsWith("[")) { // if JSON string is an array
                JSONArr = new JSONArray(ResultObject);
                System.out.println("length" + JSONArr.length());
                for (int i = 0; i < JSONArr.length(); i++) {
                    JSONObj = (JSONObject) JSONArr.get(i);
                    BundleResult.putString(String.valueOf(i), JSONObj.toString());
                    // System.out.println(bundleResult.getString(i));
                } 
            }
        }
        catch (Exception exception)
        {

        }

        return null;

    }
4

3 に答える 3

1

JSON 配列オブジェクトがある場合:

JSONObject jObject = new JSONObject(***JSON String you have ***);
JSONArray contestantObjects = jObject.getJSONArray("*** Array Name ***");
for(int i=0; i<contestantObjects.length(); i++) {
        mChannels.setId(contestantObjects.getJSONObject(i).getString("id").toString());
        mChannels.setName(contestantObjects.getJSONObject(i).getString("name").toString());
}

アイテムが 1 つだけの場合:

JSONObject jObject = new JSONObject(***JSON String you have ***);
mPreview.setBody(jObject.getString("*** Item Name ***").toString());
mPreview.setPublishedDate(jObject.getString("publishedDate").toString());
mPreview.setRefKey(jObject.getString("refKey").toString());
mPreview.setTitle(jObject.getString("title").toString());

http://jsonviewer.stack.hu/は、JSON を解析するためのオンライン ツールです。あなたはそれを使うことができます。

于 2012-06-19T02:06:02.560 に答える
0
JSONObject prefsJson = new JSONObject(prefsJsonString);
String str = prefsJson.has("str") == true ? prefsJson.getString("str") : "";

それは大丈夫ですか?

于 2012-06-19T01:52:48.790 に答える
0

JSON 文字列の解析に使用したリンクを参照して、bundleResult関数からオブジェクトを返すことをお勧めします。メソッドの戻り値を に変更しますpublic Bundle MASUK(String user, String password)

編集

Bundle オブジェクトを初期化することを忘れないでください。

private Bundle bundleResult=new Bundle();

また、使用されている変数の大文字/小文字を変更しないように注意してください。私はあなたのコードBundleResult.putString(Key, Value);で見ることができ、参照リンクは使用していますbundleResult.putString(Key, Value);

于 2012-06-19T03:04:32.540 に答える