I am trying to dynamically create JSON body to send as payload in REST method. Code:
List<Transaction__c> trans1 = new List<Transaction__c>([Select Id,
Transaction_Count__c, Total_Discount__c, Total_Cost__c, CreatedDate
FROM Transaction__c
WHERE Id = 'a015g000003WFxNAAW'
LIMIT 1
]);
TransactionJson obj = new TransactionJson(trans1);
public class TransactionJson {
public String jsonString {get;set;}
public TransactionJson(List<Transaction__c> transList){
List<Transaction__c> trans = transList;
System.JSONGenerator js = json.createGenerator(true);
js.writeStartObject();
js.writeFieldName('keys');
js.writeStartObject();
js.writeStringField('TransactionID', trans.get(0).Id);
js.writeEndObject();
js.writeFieldName('values');
for(Transaction__c t : trans){
js.writeStartObject();
js.writeNumberField('TotalCost', t.Total_Cost__c);
js.writeEndObject();
}
js.writeEndObject();
jsonString = js.getAsString();
System.debug('body = ' + jsonString);
}
}
String body2 = JSON.serialize(obj);
System.debug('body2 = ' + body2);
I am getting the following output. Why am I getting the escape characters? Also I need to return the body and all values as string itself. Thanks. 12:30:06:022 USER_DEBUG [38]|DEBUG|body2 = {" jsonString":"{\n "keys" : {\n "TransactionID" : "a015g000003WFxNAAW"\n },\n "values" : {\n "TotalCost" : 1005.00\n }\n}"}