0
votes

I have the below JSON and Model class,how to Deserialize this JSON using GSOn am getting an exception like “Expected BEGIN_OBJECT but was BEGIN_ARRAY” for below snippet.how to form Model calss for below JSON data

Gson gson = new Gson();
Referrals referrals = gson.fromJson(response.toString(),Referrals.class);

public class Referrals {

private List<Referral> referrals;

}

public class Referral implements Serializable{

private String referral_id;
private String notes;
private String attachment;
private String patient_consent;
private String date_of_referral;
private String is_read;
private String type;
 }

{
  "referrals": [
    {
      "referral_id": "2",
      "notes": "test issue",
      "attachment": "test.jpg",
      "patient_consent": "Yes",
      "date_of_referral": "2014-11-26 15:14:45",
      "is_read": "0",
      "type": "sender"
    },
    {
      "referral_id": "1",
      "notes": "ok",
      "attachment": null,
      "patient_consent": "Yes",
      "date_of_referral": "2014-11-26 11:52:43",
      "is_read": "0",
      "type": "sender"
    }
  ],
  "response": "1"
}
3

3 Answers

0
votes

Try changing this

private List<Referral> referrals;

to

private ArrayList<Referral> referrals;

Also make Referrals class Serializable

0
votes

try this.. hope this will work.

private Referral[] referrals;
0
votes

Create a class called ReferralHandler:

public class ReferralHandler implements Serializable {

@SerializedName("referrals")
private ArrayList<Referral> referrals = new ArrayList<Referral>();

public ArrayList<Referral> getReferrals() {
    return referrals;
}

and then create a class called Referral:

public class Referral implements Serializable {

@SerializedName("referral_id")
private String referral_id;
@SerializedName("notes")
private String notes;
@SerializedName("attachment")
private String attachment;
@SerializedName("patient_consent")
private String patient_consent;
@SerializedName("date_of_referral")
private String date_of_referral;
@SerializedName("is_read")
private String is_read;
@SerializedName("type")
private String type;

// setters and getters
}

and finally to parse, you have to write:

ReferralHandler referralsObject = gson.fromJson(response.toString(), ReferralHandler.class);
ArrayList<Referral> referrals = referralsObject.getReferrals();