zoukankan      html  css  js  c++  java
  • 动态类型和匿名类型在asp.net webapi中的应用

    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 SimpleProduct
    2 {
    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);
    }
  • 相关阅读:
    史上不全 ——LINQ to SQL语句
    asp.net mvc 5 后台操作
    asp.netmvc 前台基本控件操作
    ef6+asp.net MVC5+bootstrap3
    个人改造方法调用接口文档
    mvc开发过程中遇到的一些小问题修改
    FileUpload1 在部分浏览器中实现多选
    时间字段 输入空值显示为1900-1-1的解决办法,在asp.net 后台处理
    ASP.NET-C#中字符串操作
    保留多行文本框的换行与空格样式,并转义HTML标记的尖括号
  • 原文地址:https://www.cnblogs.com/dehai/p/4595185.html
Copyright © 2011-2022 走看看