使用JsonWriter时,WriteStartConstructor的目的是什么?

时间:2015-08-03 02:28:11

标签: c# json constructor json.net

标题说明了一切。我看到它(带有相应的结尾)吐出以下内容......

new Foo(
)

...但我不明白反序列化时new实际上做了什么。文档只是说它写了一个Json构造函数,但不是Json构造函数

1 个答案:

答案 0 :(得分:3)

此方法是作为增强功能的一部分引入的,允许Json.NET在使用如下的JavaScript构造函数表示时解析日期文字:new Date(1234656000000)。有关详细信息,请参阅Serializing Dates in JSON。尽管根据JSON standard,这种语法并不严格有效,但显然有足够的需求来支持Newtonsoft所说的。

因此,有必要向JsonWriterJsonReader添加低级方法,以便以此格式编写和读取文字。 (严格来说,我认为写作可能已被添加到WriteRaw,这可能是一种hackey,无论如何没有方法ReadRawWriteStartConstructor是这些低级别之一实用方法。

还有一个高级Linq-to-JSON类JConstructor来表示这种语法。您可以根据需要使用它来支持其他特定的JavaScript构造函数,例如,请参阅How to convert new Date(year, month, day) overload with JSON.Net