Malformed JSON: Expected '{' at the beginning of object
@HttpPost
global static Void doPost()
{
//Initailizing variables
String respString ='';
RestRequest req = RestContext.request;
RestResponse resp = RestContext.response;
res.addHeader('Content-Type', 'application/json');
Response repObj = new Response();
Test_Survey__c surveyobj = new Test_Survey__c();
try
{
RequestJSON reqData = new RequestJSON();
Boolean flag = False;
reqData = (RequestJSON)JSON.deserialize(req.requestBody.toString(),RequestJSON.class);
flag = validate();
String Duprec = CheckDuplicateSurvey(reqData.Mobile_1);
// System.debug('after validate '+Duprec);
if(String.IsNOtBlank(Duprec))
{
String Error= 'Duplicate Mobile No';
resp.responseBody = Blob.valueOf(Error);
}
if(String.IsBlank(Duprec))
{
if(!flag){
// logic Part
surveyobj.Test_Mobile_1__c=reqData.Mobile_1;
surveyobj.Test_Mobile_2__c=reqData.Mobile_2;
surveyobj.Test_Whats_App_Number__c=reqData.Whats_App_Number;
surveyobj.Test_LandLine__c=reqData.LandLine;
surveyobj.Test_State__c=reqData.State;
surveyobj.Test_District__c=reqData.District;
surveyobj.Test_Taluka__c=reqData.Taluka;
surveyobj .Test_Hamlet_Segment_Camp__c = reqData.Hamlet_Segment_Camp;
surveyobj.Test_Supervisor_Name__c=reqData.Supervisor_Name;
surveyobj.Test_Respondent_Name__c=reqData.Respondent_Name;
insert surveyobj;
repObj.Success = true;
repObj.ResponseCode = '200';
repObj.Message = 'New Survey Created';
repObj.surveylist= new List<Test_Survey__c>();
String tempdata = JSON.serialize(repObj);
resp.responseBody = Blob.valueOf(tempdata);
respString = JSON.serializePretty(repObj,false);
}
else{
repObj.Success = false;
repObj.ResponseCode = '400';
repObj.Message = 'Survey Not Created';
String tempdata = JSON.serialize(repObj, false);
resp.responseBody = Blob.valueOf(tempdata);
respString = JSON.serializePretty(repObj,false);
resp.responseBody = Blob.valueOf(respString);
}
}else{
repObj.Success = false;
repObj.ResponseCode = '400';
repObj.Message = 'Found Duplicate Mobile No';
String tempdata = JSON.serialize(repObj, false);
resp.responseBody = Blob.valueOf(tempdata);
respString = JSON.serializePretty(repObj,false);
resp.responseBody = Blob.valueOf(respString);
}
}//end of try
Catch(Exception e){
resp.responseBody = Blob.valueOf('Error has occurred.');
}//end of catch
}//end of Post method
Test Class
static testMethod void doPost() {
Test.startTest();
String json = '{ '+
' \"Test_Mobile_1\":\"7978445691\",'+
' \"Test_Mobile_2\":\"7978445691\",'+
' \"Test_Whats_App_Number\":\"7978445691\",'+
' \"Test_LandLine\":\"022-240456320\",'+
' \"Test_State\":\"Karnataka\",'+
' \"Test_District\":\"Mysore\",'+
' \"Test_Taluka\":\"Mysore\",'+
' \"Test_Hamlet_Segment_Camp\":\"cxsfdsf\",'+
' \"Test_DOBOfFamilyHead\":\"2017-06-03T10:34:24.000Z\",'+
' \"Test_Do_you_have_your_own_house\":\"Yes\",'+
' \"Test_No_of_HouseuownHouseCharacteristics\":\"1\",'+
' \"Test_Field_Investigator_Name\":\"xyz\",'+
' \"Test_Supervisor_Name\":\"Supervisor 1\",'+
' \"Test_Respondent_Name\":\"Respondent 2\",'+
' \"Test_Date_of_the_survey\":\"2017-06-03\",'+
' \"Test_Agent_Mobile_No\":\"7978445697\",'+
' \"Test_Survey_Date\":\"2018-06-03T10:34:24.000Z\",'+
' \"Test_Solution_Date\":\"2018-06-03T10:34:24.000Z\",'+
' \"Test_Aspiration_for_new_house_const\":\"Yes\",'+
' \"Test_Main_occupation_of_the_family\":\"Employed\",'+
' \"Test_Problems_faced_by_the_Family\":\"Wealth\",'+
' \"Test_Consent_Status\":\"Consent For Interview\",'+
' \"Test_Family_Owns_Loan\":\"Yes\",'+
' \"Test_Loan_Amount\":\"750000\",'+
' \"Test_Balance_loan_amount_Outstanding\":\"75000\",'+
' \"Test_Do_you_want_remedy\":\"Yes\",'+
' \"Test_when_do_you_want\":\"2017-06-03\",'+
' \"Test_Remarks\":\"Good\"'+
'}';
RestRequest req = new RestRequest();
req.addHeader('Content-Type', 'application/json');
req.requestUri ='/services/apexrest/CreateHH_Survey/';
req.httpMethod = 'POST';
req.requestBody= Blob.valueOf(json);
RestContext.request = req;
Create_HH_Survey.doPost();
RestResponse res = new RestResponse();
RestContext.response = res;
Create_HH_Survey.Response repObj = new Create_HH_Survey.Response();
System.assertEquals(true,repObj.Success);
System.assertEquals('200',repObj.ResponseCode);
System.assertEquals('New Survey Created',repObj.Message);
System.assert(repObj!= null);
Test.StopTest();
}
\"
) in Apex code, because they do not terminate string sequences.