Json Serialization Issue
Posted: Fri Mar 13, 2020 10:53 am
I have an issue where, from the following code when the API produces Json any property with a zero value such as Price does not appear on the object, if XML or csv are given then the price shows up regardless of its value.
How can I resolve this?
Ignore the Formatted function that is for something else
How can I resolve this?
Ignore the Formatted function that is for something else
- Code: Select all
[Serializable]
[DataContract]
public class DebtorOPEAFileExportResponse
{
[DataMember]
public string CompanyID {get; set;}
[DataMember]
public DateTime EffectiveDate {get; set;}
[DataMember]
public string PartNo {get; set;}
[DataMember]
public string Description {get; set;}
[DataMember]
public double Price {get; set;}
[DataMember]
public bool GST {get; set;}
[DataMember]
public double RRPrice {get; set;}
[DataMember]
public string DiscountCode {get; set;}
[DataMember]
public string SupersededPartNo {get; set;}
[DataMember]
public bool Active {get; set;}
[DataMember]
public string StockingCode {get; set;}
[DataMember]
public double MOQ {get; set;}
[DataMember]
public string Class {get; set;}
[DataMember]
public string Filler {get; set;}
public DebtorOPEAFileExportResponse()
{
CompanyID = "";
EffectiveDate = DateTime.Now;
PartNo = "";
Description = "";
Price = 0;
GST = false;
RRPrice = 0;
DiscountCode = "";
SupersededPartNo = "";
Active = false;
StockingCode = "";
MOQ = 0;
Class = "";
Filler = "";
}
public string Formated()
{
string result = "";
result += CompanyID.OPEAPadRight(4);
result += EffectiveDate.ToString("yyMMdd").OPEAPadRight(6);
result += PartNo.OPEAPadRight(20);
result += Description.OPEAPadRight(35);
result += (Price *100).OPEARoundedString(0).OPEAPadLeft(10, '0');
result += (RRPrice *100).OPEARoundedString(0).OPEAPadLeft(10, '0');
result += DiscountCode.OPEAPadRight(2);
result += SupersededPartNo.OPEAPadRight(20);
result += Active ? "A" : "N";
result += GST ? "1" : "0";
result += StockingCode.OPEAPadRight(1);
result += MOQ.OPEARoundedString(0).OPEAPadRight(4);
result += Class.OPEAPadRight(4);
result += Filler.OPEAPadRight(8);
return result;
}
}
public static class ExtHelper
{
public static string OPEAPadLeft(this string str, int TotalWidth, char PadChar = ' ')
{
return str.PadLeft(TotalWidth, PadChar).Substring(0, TotalWidth);
}
public static string OPEAPadRight(this string str, int TotalWidth, char PadChar = ' ')
{
string strPadded = str.PadRight(TotalWidth, PadChar);
return strPadded.Substring(strPadded.Length - TotalWidth, TotalWidth);
}
public static string OPEARoundedString(this double val, int decimals)
{
return Math.Round(val, decimals).ToString();
}
}