关于对象序列化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字符串

posted @ 2013-12-26 20:23  KyrieYang  阅读(1936)  评论(0编辑  收藏  举报