精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
NewtonJson是专业处理Json数据的开源库,用于C#.NET开发。NewtonJson在5年前就用过,这些年随着VS的升级,NewtonJson也进行了升级,不同的VS .NET版本使用不事的NewtonJson库。Json数据在通信环境里经常使用,最近开发一个CS项目就使用到了Json,所以再用到了NewtonJson。
NewtonJson开源主要是理解NewtonJson的例子代码,当然codeproject和其它平台也会有NewtonJson的示例代码,这些代码都是NewtonJson特点的理解,值得学习。
在Newtonsoft.Json.Tests目录下重要的有:Benchmarks性能测试、Converters转换、Issues细节问题、JsonTextReaderTests Reader封装、Linq、Schema方案和Serialization序列化,这些例子吃透就能掌握NewtonJson的特点,NewtonJson是高效安全新潮的Json处理库,大家可以放心使用。
NewtonJson开发需要导入NewtoJson,用nuget可以导入,低版本的VS可以下载文件,找到dll,加到项目引用里使用。我用的下载文件名是json130r1,里面并没有NewtonJson名称,比较奇怪。
NewtonJson的使用要充分理解泛型特点,泛型结合类和集合使用很方便,比如:。
string json = @"{ 'Name': 'Bad Boys', 'ReleaseDate': '1995-4-7T00:00:00', 'Genres': [ 'Action', 'Comedy' ] }"; Movie m = JsonConvert.DeserializeObject<Movie>(json); string name = m.Name;
DeserializeObject是函数,函数带有<>和类名,就是泛型的标志,泛型机制使处理数据更方便。NewtonJson的泛型底层用到了Type类型反射机制,泛型类型通过了typeof进行了转换保存,底层使用Type机制处理类的属性。
NewtonJson除了支持泛型,还支持LINQ,LINQ的主要类是JObject、JArray和JValue,NewtonJson里实现了这几类,底层代码非常复杂,正因为有了这些复杂的底层代码,我们可以方便地使用类似下面的代码:
string rawJson = @"{ ""task"": { ""dueDate"": ""2012-12-03T00:00:00"" } }"; dynamic dyn = JsonConvert.DeserializeObject<dynamic>(rawJson); DateTime dueDate = dyn.task.dueDate.Value;
上面代码没有定义类和属性成员,用了dynamic直接代表了类型,但是类型的属性还可以用.来访问到,这非常强大方便。