• 关于对象序列化json 说说


    下面一个json格式图(说一下,json 其实就是js 数组和对象的一种字符串表现形式 var obj=[] 或者var obj={}  )

    var json= {} 如下

    从图中看 json中有两个成员分别是 total 和 ship(而ship里面有多个对象,那么我们就知道 ship是一个List<ship>列表)

    下面我们在C#中模拟输出此效果

       public class JsonHelper
       {
           /// <summary>
           /// JSON序列化
           /// </summary>
           public static string JsonSerializer<T>(T t)
           {
               DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
               MemoryStream ms = new MemoryStream();
               ser.WriteObject(ms, t);
               string jsonString = Encoding.UTF8.GetString(ms.ToArray());
               ms.Close();
               return jsonString;
           }
    
           /// <summary>
           /// JSON反序列化
           /// </summary>
    
           public static T JsonDeserialize<T>(string jsonString)
           {
               DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
               MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
               T obj = (T)ser.ReadObject(ms);
               return obj;
           }
    
       }

    //上面jsonHelp是帮助类

     public class rows
        {
            public int itemid { get; set; }
            public int productid { get; set; }
            public string listprice { get; set; }
            public string unitcost { get; set; }
            public string status { get; set; }
            public string attr1 { get; set; }       
        }
        public class Product
        {
            public int total { get; set; }
    
            public List<rows> ship { get; set; } //列表集对像 属性
        }
     protected void Page_Load(object sender, EventArgs e)
            {
                Product prt = new Product(); //主对象
    
                rows  r = new rows();                     
                List<rows> list_row = new List<rows>(); //列表 list
    
                for (int i = 0; i < 3; i++)
                {
                    r.itemid = i;
                    r.productid = i;
                    r.listprice = "ss_" + i;
                    r.unitcost = "un_" + i;
                    r.status = "Status" + i;
                    r.attr1 = "atrr" + i;
                    list_row.Add(r);              
                }
    
                prt.total = 10;
                prt.ship = list_row;
                Response.Write(JsonHelper.JsonSerializer<Product>(prt)); //序列化输出
    
            }

    最后昨到上面输出的json字符串

  • 相关阅读:
    TypeError: Object(…) is not a function
    解决 OSError: [WinError 126] 找不到指定的模块
    LeetCode——和等于 k 的最长子数组长度
    LeetCode——判断子序列
    LeetCode——递增的三元子序列
    LeetCode——字符串相乘
    LeetCode——课程安排 IV
    LeetCode——最小移动次数使数组元素相等
    同源时钟、同相位时钟、同时钟域
    C++ 创建动态二维数组 使用vect<vec> 并初始化为0
  • 原文地址:https://www.cnblogs.com/yzenet/p/3493007.html
Copyright © 2020-2023  润新知