1、 动态类型用于webapi调用
假设需要调用一个webapi,webapi返回了一个json字符串。字符串如下:
{"ProductId":"AN002501","ProductName":"XX洗衣粉","Description":"","UnitPrice":9.9}
问:如何获得json字符串中的值?
常规的做法是:先构建一个类,然后再使用JsonConvert对它进行反序列化。示例如下:
(1)构建类
public class Product
{ public string ProductId { get; set; } public string ProductName { get; set; } public string Description { get; set; } public decimal UnitPrice { get; set; } }
(2)反序列化:
string jsonString = "{\"ProductId\":\"AN002501\",\"ProductName\":\"XX洗衣粉\",\"Description\":\"\",\"UnitPrice\":9.9}"; dynamic product = JsonConvert.DeserializeObject<Product>(jsonString);
若是使用动态类型的话,则可以不需要构建一个类来承载序列化。示例如下:
dynamic obj = JsonConvert.DeserializeObject<dynamic>(jsonString);
2、 匿名类型用于webapi输出
假设需要输出以下的json字符串:{"Id":"AN002501","Price":9.9}。问:如何达成目的?
常规的做法是:先构建一个拥有Id和Price属性的类,然后再对它进行序列化后输出。示例如下:
(1)构建类
public class SimpleProduct
{
public string Id { get; set; } public decimal Price { get; set; }
}
(2)序列化后输出
public ActionResult Test1()
{
return Json(new SimpleProduct { Id = "", Price = 9.9M }, JsonRequestBehavior.AllowGet);
}
若使用匿名类型的话,则不需要构建一个类来承载序列化。示例如下:
public ActionResult Test2()
{
return Json(new { Id = "", Price = 9.9M }, JsonRequestBehavior.AllowGet);
}