【发布时间】:2015-08-03 02:28:11
【问题描述】:
标题说明了一切。我看到它(带有相应的末端)吐出以下内容......
new Foo(
)
...但我不明白 new 在反序列化时实际上做了什么。文档只是说它编写了一个 Json 构造函数,而不是 Json 构造函数是!
【问题讨论】:
标签: c# json constructor json.net
标题说明了一切。我看到它(带有相应的末端)吐出以下内容......
new Foo(
)
...但我不明白 new 在反序列化时实际上做了什么。文档只是说它编写了一个 Json 构造函数,而不是 Json 构造函数是!
【问题讨论】:
标签: c# json constructor json.net
此方法是作为增强功能的一部分引入的,以允许 Json.NET 在使用 JavaScript 构造函数表示时解析日期文字,如下所示:new Date(1234656000000)。详情请见Serializing Dates in JSON。尽管根据JSON standard,这种语法并不是严格有效的,但显然有足够的需求来支持它,Newtonsoft 把它放进去。
因此,有必要在JsonWriter 和JsonReader 中添加低级方法来以这种格式写入和读取文字。 (严格来说,我想写作本可以附加到WriteRaw,这有点骇人听闻,反正没有方法ReadRaw)WriteStartConstructor 是这些低级实用方法之一。
还有一个高级 Linq-to-JSON 类 JConstructor 来表示这种语法。您可以根据需要使用它来支持其他特定的 JavaScript 构造函数,例如参见 How to convert new Date(year, month, day) overload with JSON.Net。
【讨论】: