sma*_*man 11 c# linq json json.net linq-to-json
Json.NET定义了一种JConstructor
类型.
这很令人困惑,因为(据我所知)构造函数不是JSON的一部分.我仔细检查了JSON规范并浏览了json.org但却找不到任何东西.网上任何地方似乎都没有关于此类型的文档.
因为Json.NET被如此广泛地使用(它甚至由微软委托),我认为必须有一些合理的动机将这种表示包含在对象模型中.问题是,我决定动机的任何尝试都只是猜测.
我测试了类型及其序列化,明显的行为是只包装JavaScript代码new constructorName(...)
,例如:
new JConstructor("ctorExample",
new JValue("value"),
new JObject(
new JProperty("prop1", new JValue(1)),
new JProperty("prop2", new JValue(2)))
)
.ToString()
Run Code Online (Sandbox Code Playgroud)
输出
new ctorExample(
"value",
{
"prop1": 1,
"prop2": 2
}
)
Run Code Online (Sandbox Code Playgroud)
那么,JConstructor
用于表示的类型是什么以及为什么存在?
Json.NET包含许多不属于JSON规范的功能.特别是,它允许解析一些"正式"无效的JSON文件.这包括不带引号的属性,注释,构造函数等.它包括引用的序列化和许多其他功能.某些功能(如注释或不带引号的属性)以后可以成为标准的一部分.
JConstructor
允许生成JavaScript应用程序使用的代码.以这种方式序列化的数据是无效的JSON,但是有效的JavaScript代码.这样的JSON文件无法使用JSON.parse
方法解析,但eval
能够处理它们.在某些情况下它可能很有用,但它可能是不好的做法,主要是为了向后兼容现有的JS脚本,所以这可能是它没有被广告的原因.
归档时间: |
|
查看次数: |
551 次 |
最近记录: |