使用DataContractJsonSerializer创建非XML JSON文件(Using Da

2019-09-30 08:34发布

我想使用DataContractJsonSerializer序列化的JsonFormat到文件。 的问题是,所述WriteObject方法仅具有3个选项的XmlWriter,的XmlDictionaryWriter和流。

为了得到我想要什么,我用下面的代码:

var js = new DataContractJsonSerializer(typeof(T), _knownTypes);
using (var ms = new MemoryStream())
{
   js.WriteObject(ms, item);
   ms.Position = 0;
   using (var sr = new StreamReader(ms))
   {
      using (var writer = new StreamWriter(path, false))
      {
         string jsonData = sr.ReadToEnd();
         writer.Write(jsonData);             
       }
   }
}

这是或曾经我错过了什么的唯一途径?

Answer 1:

假设你只是试图写入文本文件,它为什么你就写一个不明确MemoryStream第一。 你可以使用:

var js = new DataContractJsonSerializer(typeof(T), _knownTypes);
using (var stream = File.Create(path))
{
    js.WriteObject(stream, item);
}

这是相当简单,应该做你想要什么?



Answer 2:

我其实挺害怕自称知道的东西,乔恩斯基特没有,但我已经使用类似于产生JSON的文本文件,并保持正确的缩进下面的代码:

var js = new DataContractJsonSerializer(typeof(T), _knownTypes);
using (var stream = File.Create(path))
{
    using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, Encoding.UTF8, true, true, "\t"))
    {
        js.WriteObject(writer, item);
        writer.Flush();
    }
}

(如建议在这里 。)



文章来源: Using DataContractJsonSerializer to create a Non XML Json file