JsonWriter和JsonTextWriter有什么区别?

时间:2019-06-11 04:25:46

标签: c# json serialization .net-core

JsonWriter和JsonTextWriter有什么区别?

https://www.newtonsoft.com/json/help/html/WriteJsonWithJsonTextWriter.htm

using (JsonWriter writer = new JsonTextWriter(sw))
{
    writer.Formatting = Formatting.Indented;

    writer.WriteStartObject();
    writer.WritePropertyName("CPU");
    writer.WriteValue("Intel");

是否应该JsonTextWriter writer = new JsonTextWriter(sw)来保持一致性?

3 个答案:

答案 0 :(得分:1)

正如您从文档中所看到的,JsonTextWriter源自JsonWriter

  

JsonReaderJsonWriter是低级类,主要用于   Json.NET内部使用。要快速使用JSON,   serializer-序列化和反序列化JSON-或使用LINQ   推荐使用JSON。

  

JsonTextReaderJsonTextWriter用于读取和写入JSON   文本。 JsonTextWriter上有许多设置可以控制   写入时会格式化JSON。这些选项包括   格式,缩进字符,缩进计数和引号字符。

关于这个问题

  

应该不是JsonTextWriter writer =新的JsonTextWriter(sw)   一致性

在此示例中,仅使用初始化类型作为基类就足够了,因为该演示不需要的功能比基类中公开的功能还要多

答案 1 :(得分:0)

JsonWriter是一个抽象基类。定义这种类型的变量类似于使用接口。抽象类和接口都提供了抽象协定,该协定定义了实现它们的类的最低要求成员。

  

应该不是JsonTextWriter writer =新的JsonTextWriter(sw)   一致性

通过将writer变量定义为JsonWriter,编码人员发出信号,表示他们将不使用实现中唯一的任何成员(JsonTextWriter)。他们仅打算使用属于合同的成员。这意味着,如果您将实现更改为从JsonWriter派生的其他其他类,则任何在此writer上调用成员的代码(不强制转换)都将进行编译,并且应继续工作。

答案 2 :(得分:0)

我不确定,但这可能是原因。 JsonTextWriter上有许多设置,可控制在编写JSON时如何格式化它。 表示一个作家,该作家提供了一种快速,非缓存的,仅向前的方式来生成JSON数据。

JsonTextWriter是jsonText类的子类。 因此,在对象创建时,我们必须这样写

(JsonWriter writer = new JsonTextWriter(sw))