Синтаксический анализ объекта JSON в блок TRY, CATCH

#android #json

#Android #json

Вопрос:

Я хотел бы проверить условие, которое, если true, должно перейти к следующему оператору. Проблема, с которой я сталкиваюсь, заключается в том, что я поместил код в блок try, catch. Каждый раз, когда я проверяю его значение, мне нужно его инициализировать, но после инициализации, если обнаружена неверность, при обычном выполнении блок try завершает работу и передает дескриптор блоку catch

 public class HandleJSON{
UserHelper userAdapter;
private static final String TAG = "amp;amp;----HTTPClient-----**";
public static String SendHttpPost (String URL, JSONObject jsonobj) {
String regName = "";

try{    

        Log.v("Json object request is ", jsonobj.toString());
        DefaultHttpClient httpClientInstance = GetHttpClient.getHttpClientInstance();
        HttpPost httpPostRequest = new HttpPost(URL);
        Log.v(TAG,"The url is " URL);

        StringEntity se;
        se = new StringEntity(jsonobj.toString());

        httpPostRequest.setEntity(se);
        httpPostRequest.setHeader("Accept", "application/json");
        httpPostRequest.setHeader("Content-type", "application/json");

        long t = System.currentTimeMillis();
        HttpResponse response = (HttpResponse) httpClientInstance.execute(httpPostRequest);
        Log.i(TAG, "HTTPRESPONSE RECIEVED"  (System.currentTimeMillis()-t)   "ms");

            String resultString = convertStreamToString(response.getEntity().getContent());
            Log.v(TAG , "The response is "  resultString);
            JSONObject jsonObj = new JSONObject(resultString);

            JSONObject sessionJson = jsonObj.getJSONObject("session");
            Log.i(TAG,"is it coming here");
            Log.i(TAG,"" sessionJson.getJSONObject(resultString).toString());
            String sessionId = sessionJson.getString("sessionid");
            String name = sessionJson.getString("name");
            JSONObject messageJson = jsonObj.getJSONObject("message");
            Log.i(TAG, "message is true log statement");
            String type_JSON = messageJson.getString("sessionid");
            String content_JSON = messageJson.getString("name");
            Log.i(TAG,"" messageJson.getJSONObject(resultString).toString() type_JSON content_JSON);

            Log.v(TAG,"The session ID is " sessionId);
            Log.v(TAG,"The name is " name);
            regName = name "-" sessionId "-" URL;

} catch (Exception e){
    Log.i(TAG, "message is true log statement");
    e.printStackTrace();
}
Log.v(TAG,"before the return statement " regName.toString().split("-"));
return regName;
  

}

Я приведу здесь небольшое объяснение, я получу объект JSON, который я проанализирую. Есть два типа ответа JSON, которые я получу

сообщение: если имя пользователя и пароль неверны

сеанс: если имя пользователя и пароль верны

Я хочу проверить, является ли session true, затем передать элемент управления для инициализации оператора сеанса и разделить его на части.

Надеюсь, я был ясен. Заранее спасибо

Комментарии:

1. Выберите JSONObject вместо getJSONObject и проверьте, возвращает ли он значение null developer.android.com/reference/org/json /…

Ответ №1:

вы можете использовать

 jsonObj.has("session")
  

чтобы увидеть, является ли результирующее сообщение действительным. Приведенное выше утверждение вернет true, если в результирующем json есть ключ «session». вы можете сделать то же самое, если хотите проверить наличие сообщения.

HTH.

Ответ №2:

Ну, я понял это, поместив свой код сеанса в оператор Catch. Если условие истинно, оно продолжит выполнение. Если условие равно false, оно перейдет в блок catch и выполнит там инструкции вместо простого использования printstacktrace()