一、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. BZOJ 3597 SCOI2014 方伯伯送椰子 网络流分析+SPFA

    原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3597 Description 四川的方伯伯为了致富,决定引进海南的椰子树.方伯伯的椰子园十 ...

  2. Java串口编程学习2-读串口

    如果读串口出现乱码,则: 1.可能是波特率设置不对 2.可能是数据编码格式不对 import gnu.io.*; import java.awt.*; import java.awt.event.Ac ...

  3. C++STL——概述

    一.相关介绍 STL 标准模板库 在编写代码的过程中有一些程序经常会被用到,而且需求特别稳定,所以C++中把这些常用的模板做了统一的规范,慢慢的就形成了STL 提供三种类型的组件: 容器.迭代器和算法 ...

  4. Maven中如何将源码之外的文件打包及添加本地jar

    <build> <resources> <resource> <directory>src/main/resources</directory&g ...

  5. stap用法

    sudo stap -g submit_bio.stp -D MAXACTION=100000 kern_path_locked lookup_one_len filename_create --&g ...

  6. [剑指Offer] 15.反转链表

    题目描述 输入一个链表,反转链表后,输出链表的所有元素. [思路1]三个指针在链表上同时滑动. /* struct ListNode { int val; struct ListNode *next; ...

  7. 一道js的前端面试题,主要弄清楚逗号表达式的作用

    群里看到的一道前端JS面试题.我以为我会,其实我错了.找了很多资料,写下来. var i,j,k; for( i = 0 , j = 0; i < 10 , j < 6; i++ , j+ ...

  8. javascript中window.location.search方法简介

    window.location.search方法是截取当前url中"?"后面的字符串,示例如下: 例如:http://www.firefoxchina.cn/?ntab截取后的字符 ...

  9. [UVA1625]Color Length

    题面在这里 description 输入两个长度分别为\(n\)和\(m\)的颜色序列,要求按顺序合并成同一个序列,即每次可以把一个序列开头的颜色放到新序列的尾部. 对于每个颜色\(c\)来说,其跨度 ...

  10. MySQL主主搭建

    1.在MySQL主从的基础上修改: #master1上 [mysqld] server-id=101 log-bin = mysql-bin auto-increment-increment = 2 ...