0

私のAndroidアプリでこのJSONデータを解析する際に問題があります:

[{"personid":20,"personName":"Ross Gallagher update3","email":"ross_gallagher@rossgallagher.co.uk","birthday":{"date":"2013-01-01 00:00:00","timezone_type":3,"timezone":"America\/Los_Angeles"},"anniversary":{"date":"1900-01-01 00:00:00","timezone_type":3,"timezone":"America\/Los_Angeles"},"Credit":2}]

私が得ているエラーは次のとおりです。

W/System.err: org.json.JSONException: Value [{"birthday":{"date":"2013-01-01 00:00:00","timezone":"America\/Los_Angeles","timezone_type":3},"anniversary":{"date":"1900-01-01 00:00:00","timezone":"America\/Los_Angeles","timezone_type":3},"email":"ross_gallagher@rossgallagher.co.uk","personName":"Ross Gallagher update8","Credit":2,"personid":20}] of type org.json.JSONArray cannot be converted to JSONObject

私のJSONパーサーコードは次のとおりです。

public JSONObject getJSONFromUrl(String url)
{
    HttpEntity httpEntity = null;
    JSONObject respObject = null;

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);

        HttpResponse httpResponse = httpClient.execute(httpGet);
        httpEntity = httpResponse.getEntity();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    if(httpEntity != null){
        try {
            respObject = new JSONObject(EntityUtils.toString(httpEntity));
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //....
    }
    // return JSON
    return respObject;
}

必要なのは、この JSON オブジェクトから誕生日の詳細を、名前、電子メール、クレジット、記念日とともに引き出すことだけです。

アドバイスをいただければ幸いです。

4

3 に答える 3

1

変化する

respObject = new JSONObject(EntityUtils.toString(httpEntity));

respObject = new JSONArray(EntityUtils.toString(httpEntity));

もちろん respObject はJSONArray

于 2013-06-07T08:41:24.460 に答える
0

問題は JSON 文字列にあります。角括弧[]を削除する必要があります。角括弧は、配列要素を参照するために使用されます。JSON パーサーは、json データが角括弧内にあるため、配列オブジェクトとして変換しようとします。

それがあなたを助けるなら、私の答えを受け入れてください。

于 2013-06-07T17:17:17.857 に答える
-1

解析しようとしているオブジェクトは、実際には JSONObject ではなく JSONArray であるため、その JSONArray から JSONObject を次のように取得します。

JSONArray jsonArray = new JSONArray(EntityUtils.toString(httpEntity));

JSONOject jsonObject = jsonArray.getJSONObject(0);

この jsonObject から、誕生日の詳細を取得します...

于 2013-06-07T09:32:45.970 に答える