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)
来保持一致性?
答案 0 :(得分:1)
正如您从文档中所看到的,JsonTextWriter
源自JsonWriter
JsonReader
和JsonWriter
是低级类,主要用于 Json.NET内部使用。要快速使用JSON, serializer-序列化和反序列化JSON-或使用LINQ 推荐使用JSON。
和
JsonTextReader
和JsonTextWriter
用于读取和写入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))