1. 程式人生 > >Open-source Tutorial - Json.NET

Open-source Tutorial - Json.NET

道格拉斯 ade into 閱讀 using object rip int stream

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));
}

Open-source Tutorial - Json.NET