Hello Community,
I'm struggling with deserializing a JSON response that I'm getting from my own D365FO oData endpoint :
System.ArgumentException :
HResult=0x80070057
Message=Invalid JSON primitive: { "value":[ { "dataAreaId":"usa1","CustomerGroupId":"10","ClearingPeriodPaymentTermName":"","CustomerAccountNumberSequence":"","DefaultDimensionDisplayValue":"","Description":"Retail","IsSalesTaxIncludedInPrice":"No","WriteOffReason":"","PaymentTermId":"N30","TaxGroupId":"","IsPublicSector_IT":"No" },{ "dataAreaId":"usa1","CustomerGroupId":"20","ClearingPeriodPaymentTermName":"","CustomerAccountNumberSequence":"","DefaultDimensionDisplayValue":"","Description":"Wholesale","IsSalesTaxIncludedInPrice":"No","WriteOffReason":"","PaymentTermId":"","TaxGroupId":"","IsPublicSector_IT":"No" } ]}.
Source=System.Web.Extensions
StackTrace:
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
....
If I convert that JSON on a website such as https://codebeautify.org/jsonviewer it processes just fine. I appreciate your help.
//URL to get data
webRequest = RetailWebRequest::newUrl(URL);
//Send token through JSON GET call
webRequest.parmHeader(@'Authorization: Bearer '+token);
webRequest.parmContentType("application/json;odata.metadata=none");
webRequest.parmMethod("GET");
response = webApi.getResponse(webRequest);
if(response.parmHttpStatus() != 200)
throw error("No data is returned");
rawResponse = substr(response.parmData(),2,(strlen(response.parmData())-2));
// responseData = RetailCommonWebAPI::getMapFromJsonString(rawResponse);
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
ser.MaxJsonLength = maxInt();
rawResponse = strRem(rawResponse,/*"\"" +*/ "\t" + "\r" + "\n" + "\r\n" + "\\" +"\b" + "\f");
rawResponse = "\"Values\": {" + rawResponse; // I also tried without wrapping the JSON into another "Values" segment
rawResponse += "}";
CLRObject x = ser.DeserializeObject(rawResponse); <-- Boooom
rawReponse :"\"Values\": { \"value\":[ { \"dataAreaId\":\"usa1\",\"CustomerGroupId\":\"10\",\"ClearingPeriodPaymentTermName\":\"\",\"CustomerAccountNumberSequence\":\"\",\"DefaultDimensionDisplayValue\":\"\",\"Description\":\"Retail\",\"IsSalesTaxIncludedInPrice\":\"No\",\"WriteOffReason\":\"\",\"PaymentTermId\":\"N30\",\"TaxGroupId\":\"\",\"IsPublicSector_IT\":\"No\" },{ \"dataAreaId\":\"usa1\",\"CustomerGroupId\":\"20\",\"ClearingPeriodPaymentTermName\":\"\",\"CustomerAccountNumberSequence\":\"\",\"DefaultDimensionDisplayValue\":\"\",\"Description\":\"Wholesale\",\"IsSalesTaxIncludedInPrice\":\"No\",\"WriteOffReason\":\"\",\"PaymentTermId\":\"\",\"TaxGroupId\":\"\",\"IsPublicSector_IT\":\"No\" },{ \"dataAreaId\":\"usa1\",\"CustomerGroupId\":\"30\",\"ClearingPeriodPaymentTermName\":\"\",\"CustomerAccountNumberSequence\":\"\",\"DefaultDimensionDisplayValue\":\"\",\"Description\":\"Distributor\",\"IsSalesTaxIncludedInPrice\":\"No\",\"WriteOffReason\":\"\",\"PaymentTermId\":\"\",\"TaxGroupId\":\"\",\"IsPublicSector_IT\":\"No\" },{ \"dataAreaId\":\"usa1\",\"CustomerGroupId\":\"40\",\"ClearingPeriodPaymentTermName\":\"\",\"CustomerAccountNumberSequence\":\"\",\"DefaultDimensionDisplayValue\":\"\",\"Description\":\"Broker\",\"IsSalesTaxIncludedInPrice\":\"No\",\"WriteOffReason\":\"\",\"PaymentTermId\":\"\",\"TaxGroupId\":\"\",\"IsPublicSector_IT\":\"No\" },{ \"dataAreaId\":\"usa1\",\"CustomerGroupId\":\"90\",\"ClearingPeriodPaymentTermName\":\"\",\"CustomerAccountNumberSequence\":\"\",\"DefaultDimensionDisplayValue\":\"\",\"Description\":\"test\",\"IsSalesTaxIncludedInPrice\":\"No\",\"WriteOffReason\":\"\",\"PaymentTermId\":\"\",\"TaxGroupId\":\"\",\"IsPublicSector_IT\":\"No\" },{ \"dataAreaId\":\"usa1\",\"CustomerGroupId\":\"99\",\"ClearingPeriodPaymentTermName\":\"\",\"CustomerAccountNumberSequence\":\"\",\"DefaultDimensionDisplayValue\":\"\",\"Description\":\"Other\",\"IsSalesTaxIncludedInPrice\":\"No\",\"WriteOffReason\":\"\",\"PaymentTermId\":\"\",\"TaxGroupId\":\"\",\"IsPublicSector_IT\":\"No\" },{ \"dataAreaId\":\"usa1\",\"CustomerGroupId\":\"Default\",\"ClearingPeriodPaymentTermName\":\"\",\"CustomerAccountNumberSequence\":\"\",\"DefaultDimensionDisplayValue\":\"\",\"Description\":\"\",\"IsSalesTaxIncludedInPrice\":\"No\",\"WriteOffReason\":\"\",\"PaymentTermId\":\"\",\"TaxGroupId\":\"\",\"IsPublicSector_IT\":\"No\" } ]}"