Json.Net学习.集合序列化.

只要集合实现了IEnumable接口就可以进行序列化


Json序列化器为序列化及反序列化集合对象提供了良好的支持.

->Serializing

为了序列化一个集合---一个泛型的list,array,dictionary,或者自定义集合---简单地调用序列化器,使用您想要进行序列化的集合对象作为参数,Json.Net会序列化集合以及所有它包含的值。

示例:

public class Product
        {
            public string Name { get;    set; }
            public decimal Price { get;    set; }
            [JsonConverter(typeof(IsoDateTimeConverter))]
            public DateTime ExpiryDate {    get; set; }
        }

测试:

  Product p1 = new Product()
                {
                    Name = "Product    1",
                    Price = 99.95m,
                    ExpiryDate = new    DateTime(2010, 12, 19, 0, 0, 0, DateTimeKind.Utc)
                };
                Product p2 = new Product
                {
                    Name = "Product    2",
                    Price = 12.50m,
                    ExpiryDate = new    DateTime(2011, 1, 1, 0, 0, 0, DateTimeKind.Utc)
                };
                List<Product>    products = new List<Product>();
                products.Add(p1);
                products.Add(p2);

                string json =    JsonConvert.SerializeObject(products, Formatting.Indented);
                Console.WriteLine(json);

输出结果:

[       {         "Name": "Product    1",         "Price": 99.95,         "ExpiryDate":    "2010-12-19T00:00:00Z"       },       {         "Name": "Product    2",         "Price": 12.50,         "ExpiryDate":    "2011-01-01T00:00:00Z"       }     ]

->Deserializing

为了反序列化Json到一个.Net集合中,只要指定一个您想要反序列化的集合类型就可以了,Json.Net支持多种类型的集合.

示例:

 string json2 = @"[
                                  {
                                       ""Name"": ""Product 1"",
                                       ""ExpiryDate"":    ""2010-12-19T00:00:00Z"",
                                       ""Price"": 99.95,
                                       ""Sizes"": null
                                  },
                                  {
                                       ""Name"": ""Product 2"",
                                       ""ExpiryDate"":    ""2011-01-01T00:00:00Z"",
                                    ""Price"":    12.50,
                                       ""Sizes"": null
                                  }
                                ]";
                List<Product>    productList =    JsonConvert.DeserializeObject<List<Product>>(json2);
                Console.WriteLine(productList.Count);//2
                Product product1 =    productList[0];
                Console.WriteLine(product1.Name);//Product 1
 

->Deserializing Dictionaries

使用Json.Net你也可以反序列化一个Json对象到一个.Net的泛型Dictionary中.Json对象的属性名和属性值将会被添加到Dictionary中.

示例:

  string jsonDictionary =    @"{""key1"":""value1"",""key2"":""value2""}";
  Dictionary<string,    string> dic = JsonConvert.DeserializeObject<Dictionary<string,string>>(jsonDictionary);
  Console.WriteLine(dic.Count);//2
  Console.WriteLine(dic["key1"]);//value1
时间: 2024-10-25 13:28:02

Json.Net学习.集合序列化.的相关文章

JSON工具学习记录--FastJSON循环引用问题

JSON工具学习记录–FastJSON循环引用问题 标签(空格分隔): fastjson 最近基于他人项目做二次开发,遇到了循环引用的问题,简单来说A引用了B,B引用了C,C引用了A,那么转换json就会无休止的转换下去. 更复杂的情况,A中引用了B,B中引用了一个A的集合,比如广告引用了广告类型,广告类型里面又有该类型下的所属广告. 1.构造情景 这种又叫做双向引用,个人感觉这种设计本身就不是很合理,当然还要看具体使用场景了. 广告类: /** * @author Niu Li * @date

JSON的学习与使用

.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > .katex-html { display: block; } .katex-display > .katex > .katex-html > .tag { position: absolute; right: 0px; } .katex { font: 1.21em / 1.2 KaTeX

Newtonsoft.Json(Json.Net)学习笔记(转)

Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库,通过Nuget获取.(查看原文) 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summary> public class JsonHelper { /// <summary> /// 将对象序列化为JSON格式 /// </summary> /// <param name="o">对

Newtonsoft.Json(Json.Net)学习笔记

Newtonsoft.Json 在Vs2013中就有自带的: 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summary> public class JsonHelper { /// <summary> /// 将对象序列化为JSON格式 /// </summary> /// <param name="o">对象</param> /// <ret

JSON与js对象序列化

JavaScript对象表示法(JavaScript Object Notation,简称JSON)是一种轻量级的数据交换格式,它基于js字面量表示法,是js的一个子集.虽然是一个js的子集但是他与语言无关,它可以用于在现在所有的编程语言编写的应用程序之间进行数据交换.是一种文本格式,比较容易读写. json是一个容纳“名/值”对的无序集合,名字可以是任意字符串,值可以使任意的json类型的值.大多数编程语言都有被映射为json的数据类型,比 如对象(object),字典(dictionary)

C#对JSON的处理和JSON在JS的序列化

JS对Json的处理 json2.js的源码地址: https://github.com/douglascrockford/JSON-js json2.js提供了json的序列化和反序列化方法,可以将一个json对象转换成json字符串,也可以将一个json字符串转换成一个json对象. 在页面中添加json2.js的引用. <script type="text/javascript" src="/CoreResource/JS/json2.min.js"&g

JSON基础学习

官方定义: JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-26

asp.net mvc 对象和集合序列化

private List<Model.Organization.Organization> GetOrganiztions(){var organizations = new List<Model.Organization.Organization>(); organizations.Add(new Model.Organization.Organization{Id = "1",Name = "一汽",}); organizations.A

JSON工具学习记录--FastJSON

最近做项目,总是与json打交道,在用了即可json工具后,个人认为fastJson最好用,很方便,API也清晰可见,所以记录下使用方法,给需要的人提供帮助.(部分摘抄自网络) 一.API入口 Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成. public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArr