android - How to handle gson error
<p>In my application if you click on the button then it calls the web service for the response and after mapping this response to some class using GSON at the time of mapping I'm getting the following error:</p>

<pre><code>com.google.gson.JsonParseException: The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@44c51f20 failed to deserialized json object
</code></pre>

<p>How to handle it. can anybody help me</p>

<h2>My Code</h2>

<pre><code>private OnClickListener exit3Listener = new OnClickListener(){
public void onClick(View v){
    if(!exit3status){   
        System.out.println("exit3 visible");
        //System.out.println("size"+RB_Constant.upcomingexits_obj.response.size());
        // Web service calling for exit restaurants.
        Exitexpand_pd = ProgressDialog.show(RB_UpcomingExits.this, "", "Please wait...", true);
        Thread t = new Thread(){

            public void run(){
                try {               
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
                    ExitRestaurantsResponse = getExitsRestaurants();
                    System.out.println("exit3response"+ExitRestaurantsResponse);
                } catch (SoapFault e) {
                    e.printStackTrace();
                }                   
                rb_Exitexpand_Handler.post(rb_exitrestaurantres_HandlerResp);
                Exitexpand_pd.dismiss();
            }                                               
        };
        t.start();  

        listLayout3.setVisibility(View.VISIBLE);
        exit3status = true;

        if(!exit1status || exit2status || exit4status || exit5status)
        {
            //System.out.println("exit2 GONE");
            listLayout1.setVisibility(View.GONE);
            listLayout2.setVisibility(View.GONE);
            listLayout4.setVisibility(View.GONE);
            listLayout5.setVisibility(View.GONE);

            exit1status = false;
            exit2status = false;
            exit4status = false;
            exit5status = false;
        }

    } else {
        System.out.println("exit3 GONE");
        listLayout3.setVisibility(View.GONE);   
        exit3status = false;                    
    }
    //LLExitDetails.invalidate();
}
};


final Runnable rb_exitrestaurantres_HandlerResp = new Runnable(){
    public void run(){
        try{
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
            check_exitrestrepWSResponse();
        } catch(Exception e){
            e.printStackTrace();
        }
    }
};


public void check_exitrestrepWSResponse() throws Exception{
    try{
        com.google.gson.Gson gson = new com.google.gson.Gson(); // Or use new GsonBuilder().create();
        RB_Constant.exitsrestaurants_obj = gson.fromJson(ExitRestaurantsResponse, Exitsrestaurants.class); // deserializes json into target2
        if( RB_Constant.exitsrestaurants_obj.status.equals("FAILED") != true &amp;&amp;
            RB_Constant.exitsrestaurants_obj.status.equals("SUCCESS") == true)
        {
            //System.out.println("total size:"+RB_Constant.exitsrestaurants_obj.totalrecords);
            System.out.println("res size:"+RB_Constant.exitsrestaurants_obj.response.size());
            if(ExitRestaurantsResponse.contains("Timeout expired") != true &amp;&amp;
                ExitRestaurantsResponse.contains("Cannot open database") != true &amp;&amp;
                ExitRestaurantsResponse.contains("error") != true )
            {
                // if Exits size is more zero or not
                if(RB_Constant.exitsrestaurants_obj.response.size() &gt; 0){
                    if(RB_Constant.exitsrestaurants_obj.response.size() &gt; 2){
                        if(RB_Constant.exitsrestaurants_obj.response.get(0).listRestaurants.size() &gt; 0){                                                                                                                                
                            System.out.println("Exit3 Restaurants");
                            // Create the views on the fly instead of using the ListView
                            rbupcadapter3 = new UpcomingResultsListViewAdapter3(this);

                            int numItems3 = 0;
                            if(RB_Constant.exitsrestaurants_obj.response.get(0).listRestaurants.size() &gt; 0)
                            {
                                numItems3 = RB_Constant.exitsrestaurants_obj.response.get(0).listRestaurants.size();
                                System.out.println("Exit3 restaurants size:"+numItems3);
                            }

                            //linearLayout2

                            for(int position=0; position &lt; numItems3; position++)
                            {
                                View convertview = null;
                                convertview = rbupcadapter1.getView(position, convertview, null);
                                listLayout3.addView(convertview);                                                           
                            }                                                               

                        } else {
                            System.out.println("No results in Exit3");
                            //toastMsg("No results in Exit3");
                        }   
                    }   
                }
            }
        }
    }
    catch(JsonParseException e)
    {
        System.out.println("Exception in check_exitrestrepWSResponse::"+e.toString());
    }       
}
</code></pre>
