时间:2016-12-9来源:本站原创作者:佚名

(点击上方蓝字,可快速                                                

Json的优点

数据格式比较简单,易于读写,格式都是压缩的,占用带宽小

易于解析,客户端JavaScript可以简单的通过val()进行JSON数据的读取;

支持多种语言,包括ActionScript,C,C#,ColdFusion,Java,JavaScript,Prl,PHP,Python,Ruby等服务器端语言,便于服务器端的解析;

在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;

因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

传统操作Json

很多.NET开发程序员或多或少都会遇到操作Json字符串的情况,一般来说,我们都是先定义一个和Json格式相匹配的类,然后将json字符串反序列化成对象,这样便于我们编程使用,由于.NET是强类型语言,Json又是多变的,非常灵活的,导致服务器端定义的json序列化类越来越多,操作也及其不便。特别是对多层嵌套的json更是头疼。此次不再过多声明,.NET程序员用过都明白。

简易操作Json

DynamicJson是专门为.NET程序员开发的Json操作库,其源码非常简单,仅仅只有行代码,一个对应的class类,目前只支持.NET4.0以上的.NETFramwork。

如何在项目中使用DynamicJson

直接通过Nugt安装

PMInstall-PackagDynamicJson

下载DynamicJson.dll,然后在项目中添加引用,下载地址如下:

  

判断,新增,更新,删除,替换,还可以输出新的Json字符串

//将Json字符串解析成DynamicJson对象

varjson=DynamicJson.Pars(

"{""foo"":""json"",""bar"":,""nst"":{""foobar"":tru}}");

//判断json字符串中是否包含指定键

varb1_1=json.IsDfind("foo");//tru

varb2_1=json.IsDfind("foooo");//fals

//上面的判断还可以更简单,直接通过json.键()就可以判断

varb1_2=json.foo();//tru

varb2_2=json.foooo();//fals;

//新增操作

json.Arr=nwstring[]{"NOR","XOR"};//新增一个js数组

json.Obj1=nw{};//新增一个js对象

json.Obj2=nw{foo="abc",bar=};//初始化一个匿名对象并添加到json字符串中

//删除操作

json.Dlt("foo");

json.Arr.Dlt(0);

//还可以更简单去删除,直接通过json(键);即可删除。

json("bar");

json.Arr(1);

//替换操作

json.Obj1=;

//创建一个新的JsonObjct

dynamicnwjson=nwDynamicJson();

nwjson.str="aaa";

nwjson.obj=nw{foo="bar"};

//直接序列化输出json字符串

varjsonstring=nwjson.ToString();//{"str":"aaa","obj":{"foo":"bar"}}

  

遍历

//直接遍历json数组

vararrayJson=DynamicJson.Pars(

"[1,10,,]");

forach(intitminarrayJson)

{

Consol.WritLin(itm);//1,10,,

}

//直接遍历json对象

varobjctJson=DynamicJson.Pars(

"{""foo"":""json"",""bar"":}");

forach(KyValuPairstring,dynamicitminobjctJson)

{

Consol.WritLin(itm.Ky+":"+itm.Valu);//foo:json,bar:

}

  

转换和反序列化

publicclassFooBar

{

publicstringfoo{gt;st;}

publicintbar{gt;st;}

}

vararrayJson=DynamicJson.Pars(

"[1,10,,]");

varobjctJson=DynamicJson.Pars(

"{""foo"":""json"",""bar"":}");

//将json数组转成C#数组

//方法一:

vararray1=arrayJson.Dsrializint[]();

//方法二

vararray2=(int[])arrayJson;

//方法三,这种最简单,直接声明接收即可,推荐使用

int[]array3=arrayJson;

//将json字符串映射成C#对象

//方法一:

varfoobar1=objctJson.DsrializFooBar();

//方法二:

varfoobar2=(FooBar)objctJson;

//方法三,这种最简单,直接声明接收即可,推荐使用

FooBarfoobar3=objctJson;

//还可以通过Linq进行操作

varobjctJsonList=DynamicJson.Pars(

"[{""bar"":50},{""bar"":}]");

varbarSum=((FooBar[])objctJsonList).Slct(fb=fb.bar).Sum();//

vardynamicWithLinq=((dynamic[])objctJsonList).Slct(d=d.bar);

序列化成json字符串

//声明一个匿名对象

varobj=nw

{

Nam="Foo",

Ag=30,

Addrss=nw

{

Country="Japan",

City="Tokyo"

},

Lik=nw[]{"Microsoft","Xbox"}

};

//序列化

//{"Nam":"Foo","Ag":30,"Addrss":{"Country":"Japan","City":"Tokyo"},"Lik":["Microsoft","Xbox"]}

varjsonStringFromObj=DynamicJson.Srializ(obj);

//还支持直接序列化数组,集合

//[{"foo":"fooooo!","bar":0},{"foo":"orz","bar":10}]

varfoobar=nwFooBar[]{

nwFooBar{foo="fooooo!",bar=0},

nwFooBar{foo="orz",bar=10}

};

//序列化

varjsonFoobar=DynamicJson.Srializ(foobar);

  

生成xml字符串

varobj=DynamicJson.Pars(

"{""ts"":10,""nst"":{""a"":0}");

varxmlStr=obj.xml;

  

其他(冲突问题,编译不通过问题)

varnstJson=DynamicJson.Pars(

"{""ts"":10,""nst"":{""a"":0}");

nstJson.nst();//判断是否存在nst属性

nstJson.nst("a");//删除nst属性中的a属性

//处理json中的键和C#的类型冲突导致编译失败,或语法提示错误,只需要在前面加

前缀即可

varjson=DynamicJson.Pars(

"{""int"":10,""vnt"":null}");

varr1=json.

int;//10.0

varr2=json.

vnt;//null

例子一:TwittrAPI

staticvoidMain()

{

varpublicTL=nwWbClint().DownloadString(

"   

例子二:TwittrAPI2

staticvoidMain(string[]args)

{

varwc=nwWbClint();

varstatuss=Enumrabl.Rang(1,5)

.Slct(i=

wc.DownloadString("   

看到这里,是不是觉得很爽,赶快让你的项目集成DynamicJson吧。









































白癜风治疗哪家最好
北京哪个医院治白癜风好

转载请注明原文网址:http://www.helimiaopu.com/cxkf/3047.html

------分隔线----------------------------