Search code examples
c#jsonstreamwriter

SerializeObject & StreamWriter created file not complete


here is my code :

string json = JsonConvert.SerializeObject(stocksArticles,Formatting.Indented);
StreamWriter sw = new StreamWriter("Export\\Stocks.json");
sw.Write(json);

it's working fine but the json file is not complete it's look like the StreamWriter stop before the end, this is the end of the file :

{ "Reference": "999840", "Stocks": { "S": 0.0 } }, { "

i dont understand why it's stopping, i tried to define the buffersize for the StreamWriter but no effect.


Solution

  • This is a common sign of not flushing/closing the stream (it is quite common for streams to maintain some buffer for performance reasons). You can do something like:

    StreamWriter sw = new StreamWriter("Export\\Stocks.json");
    sw.Write(json);
    sw.Close();
    

    But far more correct approach is to use using which will dispose the resource correctly:

    using (StreamWriter sw = new StreamWriter("Export\\Stocks.json"))
    {
        sw.Write(json);
    }
    

    Read more: