• .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

    我的反序列化代码:

    代码
    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"}]}

  • 相关阅读:
    Intel 10nm全系曝光!巨头也跑不动了
    国产智能手机占据半壁江山却依旧难掩三大尴尬事实
    顺势而为,HTML发展与UI组件设计进化
    怎么让引导不再是无用小透明?
    C++BUILDER的文件操作
    C++ Builder获取系统文件的路径
    C++Builder 常用String
    C++ 判断是否为邮箱格式
    AnsiString, String, char,char
    BCB如何编写,调用动态链接库DLL
  • 原文地址:https://www.cnblogs.com/haibin168/p/2013763.html
Copyright © 2020-2023  润新知