.NET 2.0 使用最新版的JSON.net 进行反序列化

大家知道 JSON.net 最新版是基于.net 3.5 框架的,要如何使其工作在 .NET 2.0框架下呢,当然是GOOGLE + baidu 啦,幸不辱命,终于在一篇英文的博客中找到了解决方法,地址如下:http://james.newtonking.com/archive/2009/08/02/net-2-0-support-added-to-json-net.aspx

这篇文章的大概意思就是 首选 下载最新版的JSON.NET 源码 (http://json.codeplex.com/),然后解压,SRC目录是其源码,我们打开Newtonsoft.Json.Net20.sln,这个是.NET 2.0的解决方案,然后编译,很顺利的就通过了,反正我是没遇啥特殊情况。编译完成后在 bin\Release 目录中你会看到一个名为DotNet20 的目录,很显然这个JSON.net 的源码做的相当不错,已经为我们写好了在.NET2.0下运行的方法。你会发现这里边多了一个DLL文件(LinqBridge.dll),这个是做什么用的呢? 在那编老外写的文章中介绍说是在.NET2.0框架下的LINQ,反正我对这个LINQ也不怎么熟,没有管,说这个组件有用就有用吧,接下来COPY LinqBridge.dll 和Newtonsoft.Json.Net20.dll 到 Json35r8\Source\TOOLS\ILMerge 中。还差最后一步。打开CMD 窗口 运行如下命令:

ilmerge.exe /internalize /out:Newtonsoft.Json.Net20.Merged.dll Newtonsoft.Json.Net20.dll LinqBridge.dll

 

这样会将两个DLL 合并为一个DLL,在程序中将合并后的DLL引入,就可以使用最新版的JSON.NET 了

以下json.net 实例代码网址:http://www.java2s.com/Open-Source/CSharp/Development/Json.NET/Newtonsoft/Json/Tests/Serialization/JsonSerializerTest.cs.htm

 

我的反序列化代码:

 

ExpandedBlockStart.gif 代码
public   static  IList < SearchResult >  GetSearchList( string  jsons)
        {
           
            
//  get JSON result objects into a list
             JObject o  =  (JObject)JsonConvert.DeserializeObject(jsons);

             JToken torrentsArray 
=  (JToken)o[ " rules " ];
             
            
//  serialize JSON results into .NET objects
             IList < SearchResult >  searchResults  =   new  List < SearchResult > ();
             SearchResult c 
=   null ;
            
foreach  (JToken result  in  torrentsArray)
            {
                c 
=   new  SearchResult();
                c.SearchField 
=  result.SelectToken( " field " ).ToString().Replace( " \ "" , "" );
                c.searchString  =  result.SelectToken( " data " ).ToString().Replace( " \ "" "" );
                c.SearchOper  =  result.SelectToken( " op " ).ToString().Replace( " \ "" "" );

                
// Criterion searchResult = JsonConvert.DeserializeObject<Criterion>(result.ToString());
                searchResults.Add(c);
            }
 
            
return  searchResults;
        }

 

 

json:

{"aaa":"bbbb","rules":[{"field":"xxxx","data":"ooooo","op":"lt"},{"field":"xxxx","data":"ooooo","op":"gt"},{"field":"xxyxx","data":"ooooo","op":"lte"}]}

 

结束了,不明白的回贴了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值