代码改变世界

JSON.Net 的使用

2011-04-27 16:33  名刘天下  阅读(709)  评论(0编辑  收藏  举报

1、使用json.net 组件 生成JSON字符串,自定义日期格式

摘自:http://www.cnblogs.com/hxling/archive/2010/11/08/1871633.html  

public static string ToJson(object obj,bool formatjson)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
 
            IsoDateTimeConverter idtc = new IsoDateTimeConverter();
            idtc.DateTimeFormat = "yyyy-MM-dd hh:mm:ss";
 
            JsonSerializer serializer = new JsonSerializer();
            serializer.Converters.Add(idtc);
            JsonWriter jw = new JsonTextWriter(sw);
 
            if (formatjson)
            {
                jw.Formatting = Formatting.Indented;
            }
 
            serializer.Serialize(jw, obj);

            return sb.ToString();
        }
生成的日期格式为一字符串,这样便于客户端处理!
2、自定义反序列化
在我们需要反序列化的类和json中的数据完全匹配的情况下,使用DeserializeObject方法是最方便快速的,切忌类型要一致,否则会出现无法转换的错误。
T or= JsonConvert.DeserializeObject<T>(jsonString);
如果我们需要更灵活的反序列化方法,可以使用Newtonsoft.Json.Linq下的JObject进行,利用这个方法我们就可以很方便的控制反序列化后每个属性的类型,具体看例子,例子来着json.NET的文档:
string jsonText = @"{
2 ""short"":{
3 ""original"":""http://www.foo.com/"",
4 ""short"":""krehqk"",
5 ""error"":{
6 ""code"":0,
7 ""msg"":""No action taken""}
8 }";
9
10 JObject json = JObject.Parse(jsonText);
11
12 Shortie shortie = new Shortie
13 {
14 Original = (string)json["short"]["original"],
15 Short = (string)json["short"]["short"],
16 Error = new ShortieException
17 {
18 Code = (int)json["short"]["error"]["code"],
19 ErrorMessage = (string)json["short"]["error"]["msg"]
20 }
21 };
22
23 Console.WriteLine(shortie.Original);
24  // http://www.foo.com/
25  
26 Console.WriteLine(shortie.Error.ErrorMessage);
27  // No action taken
3、Json.net说法——(二)集合序列化
摘自:http://www.cnblogs.com/jams742003/archive/2009/12/25/1631829.html
 4、通过属性标签自定义JSON序列化
http://www.cnblogs.com/jams742003/archive/2009/12/24/1631587.html
5、在线帮助
http://james.newtonking.com/projects/json/help/