2013-03-18 4 views
8

の値はありません同じトピックとエラーでここにいくつかの質問が掲載されていることは知っていますが、私の問題と同じ問題を示すものはないので、原因を指摘してください。 だから私は私のアプリにログイン機能を実装しようとしていると、ここでコードは次のとおりです。Android - JSONException

if (tag.equalsIgnoreCase(login_tag)){ 
       // check for login response 
       try { 
        if (json.getString(KEY_SUCCESS) != null) { 
         String res = json.getString(KEY_SUCCESS); 
         if(Integer.parseInt(res) == 1){ 
          // user successfully logged in 
          // Store user details in SQLite Database 
          DatabaseHandler db = new DatabaseHandler(mContext); 
          JSONObject json_user = json.getJSONObject("user"); 

          // Clear all previous data in database 
          logoutUser(mContext); 
          Toast.makeText(mContext, json.toString(3), Toast.LENGTH_LONG).show(); 
          db.addUser(json_user.getString(KEY_EMAIL), json_user.getString(KEY_NAME), json.getString(KEY_UID), json.getString(KEY_AVA), json_user.getString(KEY_BDAY), json_user.getString(KEY_COUNTRY), json_user.getString(KEY_PREF), json_user.getString(KEY_SPEND)); 

          // Launch Dashboard Screen 
          Intent dashboard = new Intent(mContext, DashboardActivity.class); 

          // Close all views before launching Dashboard 
          dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
          mContext.startActivity(dashboard); 

          // Close Login Screen 
          ((Activity) mContext).finish(); 
         } 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 

そして、これはログイン時に私が得たJSONレスポンスです:

{ 
    "tag": "login", 
    "success": 1, 
    "error": 0, 
    "uid": "5123", 
    "user": { 
     "email": "[email protected]", 
     "name": "abc", 
     "avatar": "avatars/img_hzsxda_2013-03-18-11-03-33.jpg", 
     "bday": "1991-02-01", 
     "country": "Australia", 
     "preferences": "none", 
     "spending": "none" 
    } 
} 

だから、明らかにあり

03-18 12:06:36.972: W/System.err(24574): org.json.JSONException: No value for avatar 

は値のアバターを持っていないので、私はaddUserを完了することができない、したがってLOGI:avatarの値が、私はまだ私のlogcatでこの警告を得ましたnは失敗する。 エラーを見つけて解決する方法を教えてください。ありがとうございました。

+0

KEY_AVAの見た目は? – Sajmon

+0

これは私がそれを宣言した方法です: 'private static String KEY_AVA =" avatar ";' –

+0

あなたの実際の電子メールを使用しないことをお勧めします。あなたは他の誰がこのウェブサイト(ハッカー/売り手など)で探しているのかわかりません – Bigflow

答えて

52

ここでavatar値を取得するために間違ったオブジェクトを使用していますjson.getString(KEY_AVA)。それはjson_user.getString(KEY_AVA)でなければなりません。

getStringの代わりにoptStringを使用して、値が存在しない場合は例外をスローする代わりにnullを返します。

+0

そうですよ!私はあまりにも不注意でしたが、たくさんありがとう! –

+3

getの代わりにoptを使う可能性を指摘してくれてありがとう!これは私に多くのトラブルを救った! –

+0

nullではなく空の文字列です。 – Sam

関連する問題