JSON 简介

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。

JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。XML利用标记语言的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及高级检索方面具备对JSON的优势,而JSON则由于比XML更加小巧,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。

Why JSON.NET?

我们都知道 .NET 自带用于将对象序列化成 JSON 的类(DataConstractJsonSerializer 和 JavaScriptSerializer),但是 JSON.NET 给我们带来更多的功能和强大的性能。具体可以查看官网介绍。

如何使用?

假如我们有这样一个对象

public class Movie
{
public string Name { get; set; }
public int Year { get; set; }
}

将对象序列化为 JSON

Movie movie = new Movie
{
Name = "Bad Boys",
Year = 1995
};
string json = JsonConvert.SerializeObject(movie, Formatting.Indented);

将 JSON 反序列化为对象

string json = @"{
'Name': 'Bad Boys',
'Year': 1995
}";
Movie movie = JsonConvert.DeserializeObject<Movie>(json);

将 JSON 序列化为文件

Movie movie = new Movie
{
Name = "Bad Boys",
Year = 1995
}; // 方法一
// serialize JSON to a string and then write string to a file
File.WriteAllText(@"c:\movie.json", JsonConvert.SerializeObject(movie)); // 方法二
// serialize JSON directly to a file
using (StreamWriter file = File.CreateText(@"c:\movie.json"))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(file, movie);
}

从文件中获取 JSON

// 方法一
// read file into a string and deserialize JSON to a type
Movie movie1 = JsonConvert.DeserializeObject<Movie>(File.ReadAllText(@"c:\movie.json")); // 方法二
// deserialize JSON directly from a file
using (StreamReader file = File.OpenText(@"c:\movie.json"))
{
JsonSerializer serializer = new JsonSerializer();
Movie movie2 = (Movie)serializer.Deserialize(file, typeof(Movie));
}

最新文章

  1. 浅谈Java 8的函数式编程
  2. Android发展演变与开发环境搭建
  3. 利用div实现遮罩层效果
  4. 关于网站高性能中磁盘cpu以及内存对网站性能的影响
  5. ubuntu 14.04下 horizon openstack_dashboard 的开发环境搭建
  6. QT获得所有系统环境变量(包括Linux和MAC的信息)
  7. 一口一口吃掉Hibernate(八)——Hibernate中inverse的用法
  8. 如何修改vsftpd的默认根目录/var/ftp/pub到另一个目录?
  9. VMware10不能安装64位(linux)系统,提示此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态
  10. 03SQLALchemy外键约束
  11. 如何才能在python的路上走得更远
  12. qt 在窗口上画框
  13. Linux 内核里的数据结构:位图(bitmap)
  14. application.properties配置文件
  15. C#字符串操作方法签名等
  16. Android开发之漫漫长途 XIX——HTTP
  17. Linux文件下载(转)
  18. 实例的render方法渲染组件
  19. thinkphp ajax删除 隐藏与显示
  20. mysql区间范围查询问题

热门文章

  1. RPM包的使用
  2. squid代理缓存服务器
  3. TCP黏包问题
  4. PAT 天梯赛 L3-008. 喊山 【BFS】
  5. 一次react滚动列表的实践---兼容ios安卓
  6. initcall_debug简要说明【转】
  7. matlab之text()函数
  8. excel根据数据源变化的动态图表
  9. BaseServlet优化Servlet,实现类似struts2的一些简单效果
  10. MongoDB 使用经验笔记