何謂JSON
JSON(JavaScript Object Nonation) 是一種輕量級的[資料交換語言],以純文字為基底儲存和傳送的資料格式.說的白話一點是一種定義好用來做資料交換的格式(還是很饒舌),那就是一種功能上類似XML的東西.還無法參透的話請參考這篇。而JSONNET講的粗淺一點就是一隻用來把NET物件轉成JSON字串或者把JSON字串轉成物件的DLL
官方介紹:
Json.NET makes working with JSON formatted data in .NET simple. Quickly read and write JSON using LINQ to JSON or serialize your .NET objects with a single method call using the JsonSerializer.
這個組件使.NET可以更簡單快速的使用JSON格式的資料,並且使用LINQ去撈資料或者序列化(產生JSON字串)您的.NET物件
整理使用筆記 :
1. 下載後直接將/bin底下的dll加入參考,目前4版有對應2.0 3.5 後面沒有版號的目錄是4.0
2. 匯入命名空間
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
3. 物件轉JSON
第一種:傳統強型別直接轉
//實踐一個書本類別並帶入資料
TradtionBook tbook = new TradtionBook { Name = "OlderBook", Author = "AndyYou", ISBN = 123456, PubDate = new DateTime(2011,9,9) };
Console.WriteLine(JsonConvert.SerializeObject(tbook)); // 這樣就轉好了
//宣告一個書本的類別
public class TradtionBook
{
public string Name;
public string Author;
public int ISBN;
public DateTime PubDate;
}
第二種: 定義JSON物件類別
[JsonObject(MemberSerialization.OptIn)] //定義該類別可以序列化,白話文可以轉成JSON字串 後面OptIn / OptOut 用來設定裡面的屬性(Property)可否被序列化
public class Book {
public Book()
{ }
[JsonProperty]
public string BookName { get; set; }
[JsonProperty]
public string Author { get; set; }
[JsonProperty]
public int ISBN { get; set; }
}
static void Main(string[] args){
Book book = new Book { Author = "AndyYou", BookName = "Whats Up", ISBN = 957927 }; //實踐Book物件並帶入資料
JsonSerializer s = new JsonSerializer(); //宣告JSON序列化物件
s.NullValueHandling = NullValueHandling.Ignore; //設定遇到Null的值的時候忽略
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
JsonWriter jw = new JsonTextWriter(sw);
s.Serialize(jw, book);
Console.Write(sb.ToString()); // 轉成JSON字串了
}
第三種:動態設定JObject 理解上可以和第二種對應去應用
JObject j = new JObject();
j.Add(new JProperty("Name", "SomeBook"));
j.Add(new JProperty("Author", "Ken"));
j.Add(new JProperty("PubDate", new DateTime(1991, 1, 1)));
JArray ja = new JArray();
ja.Add(new JValue(1024));
ja.Add(new JValue(90));
ja.Add(new JValue(32767));
j.Add(new JProperty("Record", ja));
Console.WriteLine("Dynamic Object Expo : " + JsonConvert.SerializeObject(j));
4. JSON轉物件 提供下列幾種方式轉回物件
A. JObject Jo1 = JObject.Parse(JsonString); //JsonString傳入的JSON字串
B. JObject Jo2 = JsonConvert.DeserializeObject<JObject>(JsonString);
C. 使用LINQ
var q = from p in ReObject2.Properties()
where p.Name == "Name"
select p;
Console.WriteLine((string)q.First().Value);
推薦參考文章
http://james.newtonking.com/projects/json/help/
http://blog.darkthread.net/post-2010-06-05-json-net-jobject-example.aspx
http://blog.roodo.com/sholfen/archives/8679797.html
評論
此文章尚無評論。