【问题标题】:When using a JsonWriter, what's the purpose of WriteStartConstructor?使用 JsonWriter 时,WriteStartConstructor 的目的是什么?
【发布时间】:2015-08-03 02:28:11
【问题描述】:

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

new Foo(
)

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

【问题讨论】:

    标签: c# json constructor json.net


    【解决方案1】:

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

    因此,有必要在JsonWriterJsonReader 中添加低级方法来以这种格式写入和读取文字。 (严格来说,我想写作本可以附加到WriteRaw,这有点骇人听闻,反正没有方法ReadRawWriteStartConstructor 是这些低级实用方法之一。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      • 2011-10-17
      • 2015-11-17
      • 1970-01-01
      相关资源
      最近更新 更多