zoukankan      html  css  js  c++  java
  • 基础拾遗 C# Json 与对象相互转换

    方法一.JavaScriptSerializer

    方法二.JsonConvert

    示例:

    Web API项目

    1.新建 Model:

    namespace WebApi
    {
      public class Product
      {
        public string Name { set; get; }
        public string Price { set; get; }
      }

      public class ShoppingCart
      {
        public string Name { set; get; }
        public List<Product> ProductList { set; get; }
      }
    }

    2.序列化与反序列化工具类

    (1).新建使用JavaScriptSerializer方法的的工具类JsonHelper:

    ...

    using System.Web.Script.Serialization;

    namespace WebApi
    {
      public static class JsonHelper<T>
      {
        private static JavaScriptSerializer serializer = new JavaScriptSerializer();
        public static string GetJsonStr(T objectList)
        {
          return serializer.Serialize(objectList);
        }

        public static List<T> GetObjectList<T>(string jsonStr)
        {
          List<T> objs = serializer.Deserialize<List<T>>(jsonStr);
          return objs;
        }

        public static T GetObj(string jsonStr)
        {
          return serializer.Deserialize<T>(jsonStr);
        }
      }
    }

    (1).新建使用JsonConvert方法的的工具类NetJsonHelper:

    ...

    using Newtonsoft.Json;

    namespace WebApi.Common
    {
      public class NetJsonHelper<T>
      {
        public static string GetJsonStr(T obj)
        {
          return JsonConvert.SerializeObject(obj);
        }

        public static T GetObj(string objJsonStr)
        {
          return (T)JsonConvert.DeserializeObject<T>(objJsonStr);
        }

        public static List<T> GetObjs(string objsJsonStr)
        {
          return (List<T>)JsonConvert.DeserializeObject<List<T>>(objsJsonStr);
        }

      }
    }

    3.新建控制器 ShoppingController

    public class ShoppingController : ApiController
    {

      private static ShoppingCart shoppingCart = new ShoppingCart();
      private static string productsStr = string.Empty; //保存序列化字符串
      public ShoppingController()
      {
        List<Product> products = new List<Product>() {
        new Product(){Name="Apple",Price="$20/kg"},
        new Product(){Name="Banana",Price="$15/kg"},
        new Product(){Name="Melon",Price="$20/kg"}
      };
      shoppingCart.Name = "MyFruitBaskit";
      shoppingCart.ProductList = products;
      }

      public string GetShoppingCart()
      {
        string JsonStr = JsonHelper<ShoppingCart>.GetJsonStr(shoppingCart);
        productsStr=JsonStr;  //将序列化后的字符串保存起来用于反序列化接口测试
        return JsonStr;
      }

      public IEnumerable<Product> GetFruitList()
      {
        ShoppingCart shoppingCartObj = JsonHelper<ShoppingCart>.GetObj(productsStr);
        return shoppingCartObj.ProductList;
      }

      public string GetShoppingCartByNetJson()
      {
        string JsonStr = NetJsonHelper<ShoppingCart>.GetJsonStr(shoppingCart);
        productsStr = JsonStr; //将序列化后的字符串保存起来用于反序列化接口测试
        return JsonStr;
      }

      public IEnumerable<Product> GetFruitListByNetJson()
      {
        ShoppingCart shoppingCartObj = NetJsonHelper<ShoppingCart>.GetObj(productsStr);
        return shoppingCartObj.ProductList;
      }

    }

    4.启动WEB API进行测试

    如:测试JavaScriptSerializer      

    先:  localhost:xxxx/api/Shopping/GetShoppingCart

    然后: localhost:xxxx/api/Shopping/GetFruitList

    两种方法不论在序列化还是反序列化时,当传入的是 null 时均不会出异常

  • 相关阅读:
    Tabs 选项卡插件(续)
    Menu 菜单插件
    jquery Star Rating - 星形评级插件
    Tabs 选项卡插件
    jQuery Tooltips插件
    jQuery信息提示插件(jQuery Tooltip Plugin)
    Accordion 手风琴 折叠菜单插件
    Calendars 日历插件
    Microsoft Windows 2000 professional(集成SP4)简体中文专业版下载
    俄罗斯商务资讯网(门户网站)
  • 原文地址:https://www.cnblogs.com/ajilisiwei/p/6108071.html
Copyright © 2011-2022 走看看