一、JSON使用JsonPropertyAttribute重命名属性名

1.先创建一个Movie对象,然后在其属性上添加JsonProperty,并指定重命名的名称。注意:属性Name和Director已指定。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using GongHuiNewtonsoft.Json;
  6. namespace JSONDemo
  7. {
  8. public class Movie
  9. {
  10. [JsonProperty("name")]
  11. public string Name { get; set; }
  12. [JsonProperty("Chinese Director")]
  13. public string Director { get; set; }
  14. public int ReleaseYear { get; set; }
  15. }
  16. }

2.实例化Movie对象,然后序列化。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using GongHuiNewtonsoft.Json;
  7. using GongHuiNewtonsoft.Json.Serialization;
  8. using GongHuiNewtonsoft.Json.Converters;
  9. namespace JSONDemo
  10. {
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. Movie m = new Movie
  16. {
  17. Name = "非诚勿扰1",
  18. Director = "冯小刚",
  19. ReleaseYear = 2008
  20. };
  21. string json = JsonConvert.SerializeObject(m, Formatting.Indented);
  22. Console.WriteLine(json);
  23. }
  24. }
  25. }

3.运行结果,注意:属性ReleaseYear未被重命名。

二、JSON使用JsonPropertyAttribute序列化升序排序属性

1.先创建一个Movie对象,然后指定JsonProperty,并添加Order属性。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using GongHuiNewtonsoft.Json;
  6. namespace JSONDemo
  7. {
  8. public class Movie
  9. {
  10. [JsonProperty(Order=4)]
  11. public string Name { get; set; }
  12. [JsonProperty(Order=0)]
  13. public string Director { get; set; }
  14. public int ReleaseYear { get; set; }
  15. [JsonProperty(Order=-3)]
  16. public string ChiefActor { get; set; }
  17. [JsonProperty(Order=2)]
  18. public string ChiefActress { get; set; }
  19. }
  20. }

2.实例化Movie对象,然后序列化。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using GongHuiNewtonsoft.Json;
  7. using GongHuiNewtonsoft.Json.Serialization;
  8. using GongHuiNewtonsoft.Json.Converters;
  9. namespace JSONDemo
  10. {
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. Movie m = new Movie
  16. {
  17. Name = "非诚勿扰1",
  18. Director = "冯小刚",
  19. ReleaseYear = 2008,
  20. ChiefActor="葛优",
  21. ChiefActress="舒淇"
  22. };
  23. string json = JsonConvert.SerializeObject(m, Formatting.Indented);
  24. Console.WriteLine(json);
  25. }
  26. }
  27. }

3.运行结果。注意:未指定Order序号的属性,界定于大于负数小于正数,并按默认顺序排序。

三、JSON使用JsonPropertyAttribute反序列化属性时,Required指定属性性质

1.创建一个Movie对象,给属性添加JsonProperty,并指定其Required的性质。属性Name必须有值,DateTime可以为空.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using GongHuiNewtonsoft.Json;
  6. namespace JSONDemo
  7. {
  8. public class Movie
  9. {
  10. [JsonProperty(Required=Required.Always)]
  11. public string Name { get; set; }
  12. [JsonProperty(Required = Required.AllowNull)]
  13. public DateTime? ReleaseDate { get; set; }
  14. public string Director { get; set; }
  15. }
  16. }

2.实例化Movie对象,反序列化JSON。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using GongHuiNewtonsoft.Json;
  7. using GongHuiNewtonsoft.Json.Serialization;
  8. using GongHuiNewtonsoft.Json.Converters;
  9. namespace JSONDemo
  10. {
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. string json = @"{
  16. 'Name':'举起手来1',
  17. 'Director':'冯小宁',
  18. 'ReleaseDate':null
  19. }";
  20. Movie m = JsonConvert.DeserializeObject<Movie>(json);
  21. Console.WriteLine(m.Name);
  22. Console.WriteLine(m.Director);
  23. Console.WriteLine(m.ReleaseDate);
  24. }
  25. }
  26. }

3.运行结果是

四、JSON使用JsonPropertyAttribute序列化引用类型集合

1.创建一个Director对象,并声明一个本身类型的属性,指定JsonProperty中的IsReference为true.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using GongHuiNewtonsoft.Json;
  6. namespace JSONDemo
  7. {
  8. public class Director
  9. {
  10. public string Name { get; set; }
  11. [JsonProperty(IsReference=true)]
  12. public Director ExecuteDir { get; set; }
  13. }
  14. }

2.创建一个Movie对象,声明一个Director集合的属性,指定JsonProperty中的IsReference为true.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using GongHuiNewtonsoft.Json;
  6. namespace JSONDemo
  7. {
  8. public class Movie
  9. {
  10. public string Name { get; set; }
  11. [JsonProperty(ItemIsReference=true)]
  12. public IList<Director> Directors { get; set; }
  13. }
  14. }

3.序列化对象

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using GongHuiNewtonsoft.Json;
  7. using GongHuiNewtonsoft.Json.Serialization;
  8. using GongHuiNewtonsoft.Json.Converters;
  9. namespace JSONDemo
  10. {
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. Director dir = new Director
  16. {
  17. Name = "冯小刚"
  18. };
  19. Director dir1 = new Director
  20. {
  21. Name = "张艺谋",
  22. ExecuteDir = dir
  23. };
  24. Movie m = new Movie
  25. {
  26. Name = "满城尽带黄金甲",
  27. Directors = new List<Director>
  28. {
  29. dir,
  30. dir1
  31. }
  32. };
  33. string json = JsonConvert.SerializeObject(m, Formatting.Indented);
  34. Console.WriteLine(json);
  35. }
  36. }
  37. }

4.运行结果

五、JSON使用JsonPropertyAttribute序列化忽略属性null

1.创建一个Movie对象,并在属性上指定JsonProperty,添加NullValueHandling,忽略null

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using GongHuiNewtonsoft.Json;
  6. namespace JSONDemo
  7. {
  8. public class Movie
  9. {
  10. public string Name { get; set; }
  11. public string Director { get; set; }
  12. [JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
  13. public DateTime? LaunchDate { get; set; }
  14. }
  15. }

2.实例化对象Movie对象,然后序列化

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using GongHuiNewtonsoft.Json;
  7. using GongHuiNewtonsoft.Json.Serialization;
  8. using GongHuiNewtonsoft.Json.Converters;
  9. namespace JSONDemo
  10. {
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. Movie m = new Movie
  16. {
  17. Name = "爱情呼叫转移",
  18. Director = "张建亚"
  19. };
  20. string json = JsonConvert.SerializeObject(m, Formatting.Indented);
  21. Console.WriteLine(json);
  22. }
  23. }
  24. }

3.运行的结果

JSON源代码下载地址:http://download.csdn.net/detail/lovegonghui/9342751

原文链接:http://blog.csdn.net/lovegonghui/article/details/50272743

Newtonsoft.Json 序列化和反序列化 以及时间格式 2的更多相关文章

  1. Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  2. Newtonsoft.Json 序列化和反序列化 以及时间格式

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  3. Newtonsoft.Json序列化字符串-格式化和时间格式问题

    最近C#中需要将实体进行json序列化,使用了Newtonsoft.Json public static void TestJson()        {            DataTable d ...

  4. Newtonsoft.Json 序列化和反序列化 时间格式

    From : http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeO ...

  5. Newtonsoft.Json 序列化和反序列化 时间格式 [转]

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  6. [转]Newtonsoft.Json 序列化和反序列化 时间格式

    本文转自:http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeObj ...

  7. Newtonsoft.Json 序列化和反序列化 时间格式【转】

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  8. C#中Newtonsoft.Json 序列化和反序列化 时间格式

    步骤 引用 using Newtonsoft.Json; using Newtonsoft.Json.Converters; 格式配置 IsoDateTimeConverter timeFormat ...

  9. json的序列化和反序列化支持时间格式转换

    .NET自带的json序列有时间格式问题,为了解决自己写了个json格式的序列化和反序列化 1.引入的命名空间 using System; using System.Collections.Gener ...

随机推荐

  1. J2EE开发实战基础系列一 HelloWorld

    开始咱们的第一个程序,首先是配置环境,按照上一章所描述的方式下载开发工具,然后配置Java环境变量,给大家看下具体的结构: 环境变量配置OK的提示,如上图. Eclipse和Tomcat的文件目录位置 ...

  2. [Elasticsearch] 多字段搜索 (三) - multi_match查询和多数字段

    multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在"了解你的数据 ...

  3. PHP判断类型的方法

    1.gettype():获取变量类型 2.is_array():判断变量类型是否为数组类型 3.is_double():判断变量类型是否为倍浮点类型 4.is_float():判断变量类型是否为浮点类 ...

  4. Maven中mirrors和repository的关系

    一.前言 之前没有搞清楚pom.xml里面配置的repositorys节点配置的仓库和mirrors里面配置的仓库的“镜像”间的关系,特意去搜索了相关内容,这边有篇文章讲得透彻,所以这边转载一下~ 二 ...

  5. ActiveMQ入门代码

    Hello world程序演示: 生产者: package com.mq.helloworld; import javax.jms.Connection; import javax.jms.Conne ...

  6. 深入研究java.lang.Runtime类(转)

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  7. 【bzoj1086】[SCOI2005]王室联邦 树分块

    题目描述 将一棵n个点的树分为若干“块”,每个块满足:大小在B到3B之间,并且这个“块”添加某个点后连通.求方案. 输入 第一行包含两个数N,B(1<=N<=1000, 1 <= B ...

  8. [CQOI2012]局部极小值

    题目链接 注意到\(4\times 7\)的矩阵的局部极小值最多只有8个,可以状压. 设\(f[i][sta]\)表示从小到大填数,当前填到\(i\),极小值的填充状态为\(sta\)的方案数. 考虑 ...

  9. [Leetcode] distinct subsequences 不同子序列

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  10. 解决Vue方法中setTimeout改变变量的值无效

    把data里的变量继承过来重新封装一下 let that = this; this.rightAnswer = false; setTimeout(function() { that.rightAns ...