0

有効な JSON 文字列が JSON オブジェクトにならないという問題に直面しました。

ブラウザから自分の URL を呼び出すと、有効な JSON 文字列が返されます。チェックしてください

public void initializeHttpClient() { httpclient = 新しい DefaultHttpClient(); nameValuePairs = 新しい ArrayList(2); }

public JSONObject sendHttpRequest(String url) {
    try {
        postRequest = new HttpPost(url);
        postRequest.setHeader("Content-type", "application/json");
        postRequest.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
        httpResponse = httpclient.execute(postRequest);
        httpEntity = httpResponse.getEntity();
        if (httpEntity != null) {
            String responseString = EntityUtils.toString(httpEntity);

// ここで問題が発生しています..

            JSONObject responseObject = new JSONObject(responseString);
            return responseObject;
        }
    } catch (Exception e) {
        e.getMessage();
    }
    return null;
}

public JSONObject getLogin(String serviceUrl,String o_email, String o_password,String o_user_id, String o_network_type, String o_format) {
    initializeHttpClient();
    if(serviceUrl!=null){
        nameValuePairs.add(new BasicNameValuePair("login_email",o_email));
        nameValuePairs.add(new BasicNameValuePair("password",o_password));
        nameValuePairs.add(new BasicNameValuePair("user_id",o_user_id));
        nameValuePairs.add(new BasicNameValuePair("network_type",o_network_type));
        nameValuePairs.add(new BasicNameValuePair("format",o_format));
        return sendHttpRequest(serviceUrl);
    }
    return null;
}
4

2 に答える 2

1

たとえば、文字列"Hello There"は有効な JSON ではありません。これを防ぎたい場合は、いつでも応答をラップすることができます

responseString = "{ \"result\" : " + responseString + " }";

それを JSONObject に渡すと、常に正しく解析されます

于 2013-01-08T06:53:05.223 に答える
0
 JSONObject responseObject = new JSONObject(responseString);

入力が JSON 形式でない場合、JSONObject 例外に変換できません。responseStringが整形式の JSON オブジェクトであるかどうかを確認します。

于 2013-01-08T06:48:16.120 に答える