Note that there are some explanatory texts on larger screens.

plurals
  1. PONewtonsoft JSON- Conversion to/from DataSet causes Decimal to become Double?
    primarykey
    data
    text
    <p>I'm using Newtonsoft JSON to serialize a DataSet to binary JSON using the code below. When de-serializing back to a DataSet, the field type changes from a Decimal to a Double? Does anybody know what's going wrong?</p> <p>Sample code:</p> <pre><code>static void Main(string[] args) { var ds = new DataSet(); var dt = ds.Tables.Add(); dt.Columns.Add("Test", typeof(Decimal)); dt.Rows.Add(new object[] { 1.23345M }); var data = DataSetToBinJSON(ds); var ds2 = BinJSONToDataSet(data); Console.WriteLine((ds2.Tables[0].Columns[0].DataType == typeof(Decimal)) ? "Passed" : string.Format("Failed- {0}", ds2.Tables[0].Columns[0].DataType)); Console.ReadLine(); } /// &lt;summary&gt; /// Utility function to create an optimized Binary JSON version of a DataSet /// &lt;/summary&gt; public static byte[] DataSetToBinJSON(DataSet dataSet) { if (dataSet == null || dataSet.Tables == null || dataSet.Tables.Count == 0) { return null; } using (var ms = new MemoryStream()) { using (var writer = new BsonWriter(ms)) { var serializer = new JsonSerializer(); serializer.Serialize(writer, dataSet); return ms.ToArray(); } } } /// &lt;summary&gt; /// Utility function to deserialize an optimized Binary JSON serialized DataSet /// &lt;/summary&gt; public static DataSet BinJSONToDataSet(byte[] dataBytes) { if (dataBytes.Length == 0) { return null; } using (var ms = new MemoryStream(dataBytes)) { using (var reader = new BsonReader(ms)) { var serializer = new JsonSerializer(); return serializer.Deserialize&lt;DataSet&gt;(reader); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload