[Silverlight]奇技银巧系列-2

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()以后就变成这个模样了:

image

  • JsonObject

用来表现键值对集合,它可以这样构造:

var ob = new JsonObject {
    {"jInt", jInt}, 
    {"jString", jString}, 
    {"jDouble", jDouble}
};

ToString()以后:

image

最后说一下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();

 

image

posted @ 2009-09-15 20:28  紫色永恒  阅读(935)  评论(7编辑  收藏  举报