前几天把类库由Net2.0升级到3.5,过程还是比较顺利的,只是其中一个DLL出了点问题,就Newtonsoft.Json.DLL,原来,它有2个版本,一个是基于Net2.0类库的,另一个是基于Net3.5类库,目前有没有基于4.0的版本,不清楚.可能是由于代码不规范,导致这个DLL引用失败.
之后,找到对应的3.5版本的DLL覆盖以后,编译通过,似乎正常了.但在进行JSON格式转换的时候,提示转换失败,经过调用和跟踪,发现2.0和3.5在语法上还是有差别的,在博客园里搜索了一圈,发现资料确实不少,但都比较杂,有的只说了某个点.趁着周末时间,把基于3.5的JSON操作整理了一下,现公布出来,方便大家以后使用.
JSON操作的使用场景,包括两个方面,即Web的客户端和服务端,Newtonsoft.Json是在服务端使用,客户端我使用了json.js文件,这个文件也是开源,而且在我提供的下载包里也有,大家可直接下载.它们2个类库配合使用,解析JSON就比较简单了.
下面再说下支持的数据类库,目前支持如图-1所示的类型.当然,其他数据类型也是可以支持的,大家可以自行扩展,只是下面的数据对我来说,已经够用了.
图-1
OK,下面我们就要根据这些数据类型来操作JSON了,应该说,NET3.5版本比2.0要简单些,而且还支持Linq语言.整个解析过程还是比较顺利的,只要大家注意如下几个类就可以了.如何使用在提供的源码中已经有所说明了.
Newsonsoft.Json.Linq.JObject
Newsonsoft.Json.Linq.JProperty
Newsonsoft.Json.Linq.JArray
Newsonsoft.Json.Linq.JValue
这里有一点需要描述下,就是我们打算在前台生成JSON格式字符串,在后台直接生成DataTable对象,这个功能是可以实现的.上述的JsonDataType枚举中ClientDataTable就是这个类型.简单说,是由客户端的Array+Object组成,即Array[0]=Object模式,这样我们在后台解析的时候,就可以直接生成DataTable了.当然,不止这一种格式,我们可以自己定义格式,自己解析
最后看下示例好了,根据上述的数据类型做的示例,如图-2所示.示例可以直接运行,大家直接看好了.
图-2
源文件