2016-06-07 3 views
0
  private static final String KEY_TRAINING_COUNT_READ ="trainingCountRead"; 
for (int i = 0; i < jsonArray.length(); i++) { 
        c = null; 
        c = jsonArray.getJSONObject(i); 

       training.setTrainingID(c.getInt(KEY_TRAINING_ID)); 
       training.setTrainingEvaluation(c.getInt(KEY_TRAINING_EVALUATION)); 
       training.setTrainingAim(c.getString(KEY_TRAINING_AIM)); 
       training.setTrainingExplanation(c.getString(KEY_TRAINING_EXPLANATION)); 
       training.setBehaviorID(c.getInt(KEY_BEHAVIOR_ID)); 
       training.setTrainingTotalQuestion(c.getInt(KEY_TRAINING_TOTAL_QUESTION)); 
       training.setTrainingHood(c.getString(KEY_TRAINING_HOOD)); 
       training.setTrainingCreateTime(c.getString(KEY_TRAINING_CREATE_TIME)); 
       training.setTrainingOK(c.getInt(KEY_TRAINING_OK)); 

       if(c.getString (KEY_TRAINING_NAME_READ) != null) { 
        training.setTrainingNameRead(c.getInt(KEY_TRAINING_NAME_READ)); 
       } 

       if(c.getString (KEY_TRAINING_SHAPE_READ) != null) { 
        training.setTrainingShapeRead (c.getInt(KEY_TRAINING_SHAPE_READ)); 
       } 

       if(c.getString (KEY_TRAINING_COLOR_READ) != null) { 
        training.setTrainingColorRead (c.getInt(KEY_TRAINING_COLOR_READ)); 
       } 

       if(c.getString (KEY_TRAINING_COUNT_READ) != null) { 
        training.setTrainingCountRead (c.getInt(KEY_TRAINING_COUNT_READ)); 
       } 

ошибкаJSON нулевой ошибкой Android

org.json.JSONException: Значение нуль при trainingCountRead типа org.json.JSONObject $ 1 не может быть преобразовано в целое 06-07 12: 33: 15,784 17830-17830/com.пример. W/System.err:

для

if(c.getString (KEY_TRAINING_COUNT_READ) != null) { 
        training.setTrainingCountRead (c.getInt(KEY_TRAINING_COUNT_READ)); 
       } 

значение, что

training: [ 
    { 
    trainingID: "154", 
    trainingEvaluation: "81", 
    trainingAim: "Şekil Eğitimi", 
    trainingHood: "3 temel şekli basit geometrik şekiller ile öğretme", 
    trainingExplanation: "3 temel şekli basit geometrik şekiller ile öğretme", 
    behaviorID: "3", 
    trainingTotalQuestion: "33", 
    trainingOK: "1", 
    trainingCreateTime: "1464647671", 
    trainingNameRead: "0", 
    trainingShapeRead: "1", 
    trainingColorRead: "1", 
    trainingCountRead: null 

я проверить нуль, почему она уходит внутрь, даже если она равна нулю?

} }catch (JSONException e) { 
    e.printStackTrace(); 
    Log.d(TAG, "checkdatabase hata,jsnarytrainingset"); 
    Toast.makeText(context, "Islem basarisiz, lutfen hocanızla iletisime geciniz...", Toast.LENGTH_LONG).show(); 
    Intent intent = new Intent(context, MainActivity.class); 
    intent.putExtra("username", username); 
intent.putExtra("wasDbExisted", true); 
    context.startActivity(intent); 
    ((Activity) context).finish(); 

} 
+0

Попробуйте напечатать c.getString (KEY_TRAINING_COUNT_READ) значение – Chol

+0

И ваш просят строки, но ожидая ква ... – Chol

+0

для Log.d (TAG, «c.getString (KEY_TRAINING_COUNT_READ)» журнал c.getString (KEY_TRAINING_COUNT_READ) null – user6412889

ответ

0

Попробуйте с:

if(c.getString (KEY_TRAINING_COUNT_READ) != null && !c.getString (KEY_TRAINING_COUNT_READ).equalsIgnoreCase("null")) { 
        training.setTrainingCountRead (c.getInt(KEY_TRAINING_COUNT_READ)); 
      } 
0

Когда значение ключа JSON является null, JSONObject разбирает его как "null" (строка). Если вы сравните его, как показано ниже, оно вернет true.

c.getString(KEY_TRAINING_COUNT_READ).equals("null");

см JSONObject документации для получения более подробной информации: https://developer.android.com/reference/org/json/JSONObject.html

Вы также можете использовать JsonReader для разбора JSON. Он читает JSON как поток токенов и там вы можете сравнить значение null с Enum JsonToken.NULL.

Я предпочитаю JsonReader всякий раз, когда JSON большой и сложный. В вашем случае, скажу, используйте JSONObject (вы уже используете его). Просто создайте конечную переменную String с значением "null" и вместо сравнения строк JSON с null сравните ее с конечной переменной.

Смежные вопросы