標籤:
1、 動態類型用於webapi調用
假設需要調用一個webapi,webapi返回了一個json字串。字串如下:
{"ProductId":"AN002501","ProductName":"XX洗衣粉","Description":"","UnitPrice":9.9}
問:如何獲得json字串中的值?
常規的做法是:先構建一個類,然後再使用JsonConvert對它進行還原序列化。樣本如下:
(1)構建類
1 public class Product 2 { 3 4 public string ProductId { get; set; } 5 6 public string ProductName { get; set; } 7 8 public string Description { get; set; } 9 10 public decimal UnitPrice { get; set; }11 12 }
(2)還原序列化:
1 string jsonString = "{\"ProductId\":\"AN002501\",\"ProductName\":\"XX洗衣粉\",\"Description\":\"\",\"UnitPrice\":9.9}";2 3 dynamic product = JsonConvert.DeserializeObject<Product>(jsonString);
若是使用動態類型的話,則可以不需要構建一個類來承載序列化。樣本如下:
1 dynamic obj = JsonConvert.DeserializeObject<dynamic>(jsonString);
2、 匿名型別用於webapi輸出
假設需要輸出以下的json字串:{"Id":"AN002501","Price":9.9}。問:如何達成目的?
常規的做法是:先構建一個擁有Id和Price屬性的類,然後再對它進行序列化後輸出。樣本如下:
(1)構建類
1 public class SimpleProduct2 {3 public string Id { get; set; }4 5 public decimal Price { get; set; }6 }
(2)序列化後輸出
public ActionResult Test1(){ return Json(new SimpleProduct { Id = "1333", Price = 9.9M }, JsonRequestBehavior.AllowGet);
}
若使用匿名型別的話,則不需要構建一個類來承載序列化。樣本如下:
public ActionResult Test2(){ return Json(new { Id = "1333", Price = 9.9M }, JsonRequestBehavior.AllowGet);}
動態類型和匿名型別在asp.net webapi中的應用