c# - 使用 DataContractJsonSerializer 创建非 XML Json 文件

标签 c# json serialization datacontractjsonserializer

我想使用 DataContractJsonSerializer 序列化为 JsonFormat 格式的文件。 问题是 WriteObject 方法只有 3 个选项 XmlWriter、XmlDictionaryWriter 和 Stream。

为了得到我想要的,我使用了以下代码:

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);             
       }
   }
}

这是唯一的方法还是我错过了什么?

最佳答案

假设您只是想将文本写入文件,不清楚为什么要先将其写入 MemoryStream。你可以只使用:

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

这很简单,应该做你想做的......

关于c# - 使用 DataContractJsonSerializer 创建非 XML Json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31130829/

相关文章:

c# - Postsharp:它是如何工作的?

c# - 是否有针对对象的轻型和重型版本的设计模式?

c# - 如何在知道有误差的情况下比较小数

python - 如何在基于类的 View 中返回 JSON 响应,而不是 HTTP 响应

c - 用 C 序列化包

java - 使用构建器模式编写数据类

c# - 通过私有(private) setter 对属性使用 SetValue 反射

c# - 使用 Json.net 编写 JSON 时如何打开缩进?

javascript - V-for 里面有一个数组

c# - 引用类中的另一个类以获取 json