C# 为什么会有JConstructor?
Json.NET定义了一个 这令人困惑,因为(据我所知)构造函数不是JSON的一部分。我仔细检查了一下,浏览了一遍,但什么也没找到。网络上似乎也没有太多关于这种类型的文档 由于Json.NET的应用如此广泛(它甚至被微软联合签署),我认为在对象模型中包含这种表示形式是有合理动机的。问题是,就我而言,任何试图确定动机的尝试都只是猜测 我测试了该类型及其序列化,明显的行为是只包装JavaScript代码,例如C# 为什么会有JConstructor?,c#,json,linq,json.net,linq-to-json,C#,Json,Linq,Json.net,Linq To Json,Json.NET定义了一个 这令人困惑,因为(据我所知)构造函数不是JSON的一部分。我仔细检查了一下,浏览了一遍,但什么也没找到。网络上似乎也没有太多关于这种类型的文档 由于Json.NET的应用如此广泛(它甚至被微软联合签署),我认为在对象模型中包含这种表示形式是有合理动机的。问题是,就我而言,任何试图确定动机的尝试都只是猜测 我测试了该类型及其序列化,明显的行为是只包装JavaScript代码,例如new-constructorName(…),例如: new JConstructor("c
new-constructorName(…)
,例如:
new JConstructor("ctorExample",
new JValue("value"),
new JObject(
new JProperty("prop1", new JValue(1)),
new JProperty("prop2", new JValue(2)))
)
.ToString()
输出
new ctorExample(
"value",
{
"prop1": 1,
"prop2": 2
}
)
那么,
JConstructor
类型打算表示什么?它为什么存在?Json.NET包含许多不属于Json规范的功能。特别是,它允许解析一些“正式”无效的JSON文件。这包括不带引号的属性、注释、构造函数等。它包括引用的序列化和许多其他功能。一些特性,如注释或未加引号的属性,稍后可能成为标准的一部分
JConstructor
允许生成JavaScript应用程序使用的代码。以这种方式序列化的数据是无效的JSON,但却是有效的JavaScript代码。无法使用JSON.parse
方法解析此类JSON文件,但eval
将能够处理它们。在某些情况下,它可能是有用的,但可能是不好的做法,主要用于与现有JS脚本的向后兼容性,因此这可能是它没有被宣传的原因