Json.NET的动态视图
如今JSON应用广泛。用于创建和消费JSON数据的一个流行的库是Json.NET。它提供了多种处理JSON数据的方式,可以直接解析成自定义类,也可以解析成类似于LINQ to XML这样的对象模型,后者被称为LINQ to JSON,它操作的类型通常是JObject、JArray和JProperty。它的使用方式类似于LINQ to XML,通过字符串进行访问,也可以执行动态操作。代码清单4-6使用了两种方式来处理同一个JSON数据。代码清单4-6 动态地使用JSON数据
string json = @" (本行及以下7行) 硬编码的JSON数据
{
'name': 'Jon Skeet',
'address': {
'town': 'Reading',
'country': 'UK'
}
}".Replace('\'', '"');
JObject obj1 = JObject.Parse(json); <------ 将JSON解析成JObject
Console.WriteLine(obj1["address"]["town"]); <------ 使用静态类型视图
dynamic obj2 = obj1; (本行及以下1行) 使用动态类型视图
Console.WriteLine(obj2.address.town);
虽然只是一个简单的JSON,但其中包含了一个嵌套的对象。代码的后半部分展示了:访问JSON数据,既可以使用LINQ to JSON提供的索引器,也可以使用它提供的动态视图。
读者倾向于哪种方式呢?关于两种方式一直存在各种争议。不管是采用字符串字面量还是采用动态属性访问,两种方式都容易让人犯拼写错误。采用静态类型方式,因为采用字符串作为属性名称,所以可复用度高;采用动态类型方式,在原型设计时更便于阅读。
Windows Forms开发中关于线程的两条黄金法则不陌生: