Silverlight奇技银巧系列:
所有该系列中的文章只为介绍一些Silverlight中或隐藏在Silverlight .NET framework鲜为人知的知识和技巧。这些文章并非教程,也是不是什么技术指导,您只需对文章介绍的内容保有印象。这些知识和技巧也许会在不经意间绽放银色光芒。
我想对于搞web开发的人来说,JSON应该是相当亲切而熟悉的字眼。
直到.NET Framework3.5,在.NET中处理JSON才变得轻松一些,而JSON.NET这类的辅助项目也让.NET对JSON处理锦上添花。没记错的话是Json.NET3.0提出了JObject的概念,那真的很爽…
虽然Json.NET最近也推出了支持Silverlight的类库项目,不过对于Silverlight这种客户端的东西,多弄个dll进去难免影响初始化(下载)速度,对于有“洁癖”的你我来说着实不够尽善尽美。
不过System.Json拯救了我们。在Silverlight中,这个程序集提供了对JSON类型数据的支持,有了它你就可以使用c#或者vb.net代码处理Json对象了。
该命名空间下包含4个类:
- JsonValue
其他三个类的基类。它提供了用来处理string和stream的Load()、Save()、Parse()等方法。它的ToString()方法被重载,用来以字符串形式显示原始Json.
- JsonPrimitive
用来将CLR中的原始类型(如byte,string和int等)处理为Json。它一般这么用:
var jInt = new JsonPrimitive(25); var jString = new JsonPrimitive("abc"); var jDouble = new JsonPrimitive(3.14);
- JsonArray
该类代表一个JsonValue类型的数组。参照上面例子中的的JsonPrimitive,JsonArray可以这样构造:
var ar = new JsonArray { jInt, jString, jDouble };
自然,ToString()以后就变成这个模样了:
- JsonObject
用来表现键值对集合,它可以这样构造:
var ob = new JsonObject {{"jInt", jInt}, {"jString", jString}, {"jDouble", jDouble} };
ToString()以后:
最后说一下JsonType枚举,该枚举包括
- Array
- Bollean
- Number
- Object
- String
它由JsonValue的JsonType属性返回,反映该JsonValue的实例所代表的对应CLR属性的类型。
System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.AppendLine("JInt的JsonType:" + jInt.JsonType); sb.AppendLine("jString的JsonType:" + jString.JsonType); sb.AppendLine("jDouble的JsonType:" + jDouble.JsonType); sb.AppendLine("ar的JsonType:" + ar.JsonType); sb.AppendLine("ob的JsonType:" + ob.JsonType); outputBlock.Text = sb.ToString();