I am bit new to Gson, I have a json in following format:-
{
"schedulerName" : "Commodities-ETP_Trade_Entry-FO_TCP_OAS_ALSWP-COM_SLS_BZ",
"startRequestDate" : "29-06-2017 23:39:54.910",
"activeTestCasesCount" : 7,
"statusMap" : { "Assigned" : 2, "In execution" : 1, "Pending" : 4 },
"subTaskCount" : 12,
"subTasks" : [
{ "testCaseName" : "OAS-TCP-ALSWP-0035", "testCaseType" : "DealEntry", "activeTestCase" : false, "statuses" : [ "Excluded" ], "currentStatus" : "Excluded", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0036", "testCaseType" : "DealEntry", "activeTestCase" : true, "statuses" : [ "Pending", "Assigned", "In execution" ], "currentStatus" : "In execution", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0037", "testCaseType" : "DealEntry", "activeTestCase" : false, "statuses" : [ "Excluded" ], "currentStatus" : "Excluded", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0039", "testCaseType" : "DealEntry", "activeTestCase" : true, "statuses" : [ "Pending", "Assigned" ], "currentStatus" : "Assigned", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0074", "testCaseType" : "DealEntry", "activeTestCase" : false, "statuses" : [ "Excluded" ], "currentStatus" : "Excluded", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0111", "testCaseType" : "DealEntry", "activeTestCase" : true, "statuses" : [ "Pending" ], "currentStatus" : "Pending", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0113", "testCaseType" : "DealEntry", "activeTestCase" : false, "statuses" : [ "Excluded" ], "currentStatus" : "Excluded", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0148", "testCaseType" : "DealEntry", "activeTestCase" : true, "statuses" : [ "Pending" ], "currentStatus" : "Pending", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0185", "testCaseType" : "DealEntry", "activeTestCase" : true, "statuses" : [ "Pending" ], "currentStatus" : "Pending", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0222", "testCaseType" : "DealEntry", "activeTestCase" : false, "statuses" : [ "Excluded" ], "currentStatus" : "Excluded", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0259", "testCaseType" : "DealEntry", "activeTestCase" : true, "statuses" : [ "Pending" ], "currentStatus" : "Pending", "message" : "" },
{ "testCaseName" : "OAS-TCP-ALSWP-0296", "testCaseType" : "DealEntry", "activeTestCase" : true, "statuses" : [ "Pending", "Assigned" ], "currentStatus" : "Assigned", "message" : "" }
],
"schedulerStatus" : "In execution",
"lastStatusDate" : "29-06-2017 23:40:19.251"}
and have an java class:- package com.nab.testing.taf.config;
import java.util.List;
/**
*
* Created by vpathani on 30/06/2017.
*/
public class SmtStatus {
public class SubTasks {
private String testCaseName;
private String testCaseType;
private boolean activeTestCase;
private String currentStatus;
public String getTestCaseName() {
return testCaseName;
}
public void setTestCaseName(String testCaseName) {
this.testCaseName = testCaseName;
}
public String getTestCaseType() {
return testCaseType;
}
public void setTestCaseType(String testCaseType) {
this.testCaseType = testCaseType;
}
public boolean isActiveTestCase() {
return activeTestCase;
}
public void setActiveTestCase(boolean activeTestCase) {
this.activeTestCase = activeTestCase;
}
public String getCurrentStatus() {
return currentStatus;
}
public void setCurrentStatus(String currentStatus) {
this.currentStatus = currentStatus;
}
}
private String schedulerName;
private int activeTestCasesCount;
private int subTaskCount;
private SubTasks subTasks ;
private String schedulerStatus;
public String getSchedulerName() {
return schedulerName;
}
public void setSchedulerName(String schedulerName) {
this.schedulerName = schedulerName;
}
public int getActiveTestCasesCount() {
return activeTestCasesCount;
}
public void setActiveTestCasesCount(int activeTestCasesCount) {
this.activeTestCasesCount = activeTestCasesCount;
}
public int getSubTaskCount() {
return subTaskCount;
}
public void setSubTaskCount(int subTaskCount) {
this.subTaskCount = subTaskCount;
}
public String getSchedulerStatus() {
return schedulerStatus;
}
public void setSchedulerStatus(String schedulerStatus) {
this.schedulerStatus = schedulerStatus;
}
public SubTasks getSubTasks() {
return subTasks;
}
public void setSubTasks(SubTasks subTasks) {
this.subTasks = subTasks;
}
@Override
public String toString() {
return "SmtStatus{" +
"schedulerName='" + schedulerName + '\'' +
", activeTestCasesCount=" + activeTestCasesCount +
", subTaskCount=" + subTaskCount +
", subTasks=" + subTasks +
", schedulerStatus='" + schedulerStatus + '\'' +
'}';
}
}
And i am parsing it like this:-
private static final Type STATUS_TYPE = new TypeToken<ArrayList<SmtStatus>>() { }.getType();
private static final Type STATUS_TYPE_Object = new TypeToken<SmtStatus>() { }.getType();
Case 1:
List<SmtStatus> list = getGson().fromJson(result, STATUS_TYPE);
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
or
Case 2:
List<SmtStatus> list = getGson().fromJson(result, STATUS_TYPE_Object );
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 276 path $.subTasks
Any help is really appreciated.