目前通讯中http是使用最多的,而其中Json基本是首选。大家平时解析时都是直接调用dll,但是有没有考虑过dll里面怎么处理?这个dll又从哪里来?本文将分享我接触到的4个解析Json的C#开源库。
目前我用得较多的是Newtonsoft ,后面了解到还有轻量的MiniJSON,SimpleJson以及litjson。
这里MiniJSON最精简,是一个class文件,通过对string进行简单字符串的处理来解析。
然后就是SimpleJson,也是一个class文件,不过代码量超级多,功能相对比较全面。看其他博客对这个评价蛮高的,不过我没使用过,暂不评价。
litjson,就文件多一点,好几个class组成。但是看部分博客提到跨平台上有问题。
由于之前是做windows应用,所以一直使用的是Newtonsoft,代码量远超上面的几个,编译出来的dll也是比他们的要大。所以,比较推荐用Newtonsoft,可定制化高很多,功能和内部考虑的东西也完善。
本文暂不讲怎么使用,只简单介绍怎么去github获取上面几个的源码,以及怎么编译。
提到github,这是一个好东西,好多好的开源项目都在上面。不过国内网速超级慢,使用起来不是很方便。一般情况下,可以不注册账号直接下载项目代码,下载下来是一个zip文件。也可以用VS里面的扩展插件GitHub Extension for Visual Studio,下载安装过程有点久,请耐心等待:
使用起来相对没svn好用(当然,这里是可以用svn来使用的)。
推荐使用客户端:GitHubDesktop 下载下来的应该是一个77M的全量包,直接安装就可以使用:
这里使用到的就是File–>Clone…;打开后
这里的url,就是网页上获取的:
这里贴一下看到的其他博主写的专门介绍GitHub Desktop的:Windows 上 GitHub Desktop 的操作
一.MiniJSON
github地址:MiniJSON
直接在你的项目中新建一个class,全选代码后复制过去,就可以使用了。
由于需要vpn,所以这里放一下代码吧:
1 | /* |
二.SimpleJson
github地址:SimpleJson
你可以下载下来然后用vs打开选Net2.0编译出来一个dll(这里可能会报错,将文件EscapeToJavascriptStringTests去掉就正常了)。但是你也可以像前面那样,新建一个class,然后复制SimpleJson.cs的代码,点击SimpleJson.cs后会进到下面的详情网页,选择图中的Raw,就能进到代码页面,然后Ctrl+A进行全选复制。
三.LitJSON
github地址:LitJSON
这个生成超级烦,要搭.net core的环境。由于没接触core开发,后面我还是修改vs工程文件,去掉core后才能生成。
(后面发现,其实这里是因为VS的版本问题,要新版本。这里有篇文章就是问这个的:msbuild-of-vs2017-cannot-compile-net-standard-2-0-project 查官网,只提到装2017,但是明明我的是2017(但是是16年底下载的,Core2.0是17年底出的),.NET Core 2.0.0 SDK这个也安装了,就是无法编译,其实是msbuild 版本。这个问题,和VS2010的msbuild编译不了2015版本的项目是一样的。所以如果装了新版本的,这里不用修改,是可以直接编译的。)
这里也贴一下主页:LitJSON
以及一个老版本的直接dll下载地址:DownloadDll
推荐直接下载github的然后自己编译,因为后面有更新,而网上那些,好多都是好几年前的版本。
下面记录一下我怎么编译的:
实际是修改vs工程文件,然后直接用vs打开就可以编译的,不过这里我也记录一下他自带的那些工具是怎么配置到可以用的。
先记录怎么修改vs工程文件,目录中,实际只要用到\litjson-develop\src\LitJson里的东西:
用记事本打开,ctrl+f查找包含“netstandard”的字段,就是下面截图红色部分,删掉:
这里简单说明一下为什么要删掉:
“netstandard”部分是core环境的,目前我没搭这个环境,所以直接编译是会报错的。
而中间的那个,是检查git的,如果你是部署了git,登陆了帐号,就没影响,可以更新并编译,不然就会报错。
删掉上面红色部分后,用vs打开,直接编译就成功了。
接下来介绍怎么修改自带的那些工具来生成,过程繁琐,不过不用修改vs工程文件:
首先运行build.ps1,记住不是sh(这个是linux的),右键–>使用PowerShell运行:
出现下面这样的窗口,实际是里面代码,分析出你要安装这个环境的这个包,正常情况是一直下载不下来的,vpn也救不了,后面挂百度云离线 ( 提取码:0osd)总算下载下来了。
现在目录中多了一个文件夹,里面是安装core的环境的,可以安装,目前我系统是win10版:
这里也简单记一下怎么修改代码让dotnet-install.ps1文件能运行:
首先右键–>编辑;里面好多脚本代码,和C#超级像,有兴趣可以去了解:
这里意思是传一个下载链接给它,然后下载解压(上面一堆脚本都是下载函数)。而现在这个url,是下不下来的,不过我们可以通过IIS,进行localhost下载:
windows启用IIS,在程序与功能–>启用或关闭windows功能,然后你看到有iis的就打勾就行了。
然后找到上面图中这个,点击“浏览”,把刚才通过百度云下载的dotnet-sdk-2.1.4-win-x64.zip复制过去,当然还有复制dotnet-install.ps1这个文件,不过.ps1这个后缀,在iis里面不能访问,所以我修改成txt,反正脚本中只是找文件下载,下载后保存的命名是自己定的。
然后就是修改脚本:
修改build.ps1,告诉它去localhost目录下载这个txt;同时修改这个txt去localhost下载这个zip。
这样就能正常运行了,但是这里由于网络原因,还会报错,就安装cake部分,不过可以重新启动就行,cake的下载和安装过程较顺利,安装好后多了3个文件夹:
一个是检查git的,一个是编译工具cake。
所以如果想用这个工具编译,最好是登陆git的,这样就能用自带工具编译了,core也能编译:
这里我删了core的环境安装部分,然后直接运行build.ps1就可以了。
这种方式就不用修改vs工程文件。
从ps1文件里面了解到,是调用cake来编译的,所以,其实我们可以直接cmd来操作:
cmd到build.cake所在目录,然后调用cake.exe。
四.Newtonsoft.Json
github地址:Newtonsoft.Json
这个就编译比较简单,但是会报错readonly struct(去掉readonly就行),用vs编辑工程文件,像前面那个一样删掉core和phone等等那些选项,然后再编译就能编译通过。自带的脚本也是,下载部分很顺利就能下载,155m左右;但是还有附加的编译环境,也是core的。
这里这个错,其实是C# 7的特性,老版本的vs都不支持。然后core的问题,其实也是更新新版本vs就能解决,后面我更新了新版本后,msbuild版本上来了,就能正常编译了。为什么在第三个那里没注意到时msbuild,因为那里用的是cake,所以当时是能用脚本编译,但是不能vs编译,后面找多点资料后才想起是这个可能。所以这里我就直接更新vs,然后就能直接编译了。什么都不用改。
这里放一下vs2017最新版的安装索引包吧:
两个官网下载地址:
地址1:vs2017-relnotes#15.1.26430.06
地址2:visualstudio.microsoft.com
以及.NET downloads:.NET
附加一下百度云,就是本篇文章用到的配置环境所要下载的东西(要vpn的那几个):
链接 提取码:1t2x
这里有个文章提到这个新特性:C# 7 Series, Part 6: Read-only structs
以及两篇介绍的:
.NET Core 2.0及.NET Standard 2.0
NET Standard/Core中配置使用TargetFrameworks输出多版本类库及测试:
平时用这个库比较多的原因,就是可定制化高,可以设置null值要不要序列化 ,等等之类的定制。
结尾附几个博主写的库分享: