C# JSON和對象之間互相轉換

1.首先是聲明用戶信息對象,DataContract修飾類,表示能夠被解析成JSON,DataMember修飾屬性,Order表示 解析的順序,另外Lover是數組列表,表示女友個數json

Address 表示送貨地址,DailyRecord  表示平常記錄
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
namespace FunctionTest.Model
{
    [DataContract]
    public  class UserInfo
    {
        [DataMember(Order =0)]
        public string UserName { get; set; }
        [DataMember(Order = 1)]
        public int Age { get; set; }
        [DataMember(Order = 2)]
        public int Gender { get; set; }
        [DataMember(Order =3)]
        public List<string> Lover { get; set; }
        [DataMember(Order = 4)]
        public ContactAddress Address { get; set; }
        [DataMember(Order = 5)]
        public Dictionary<string, string> DailyRecord {
            get; set;
        }
    }
   
    [DataContract]
    public class ContactAddress
    {
        [DataMember(Order =0)]
        public string Province { get; set; }
        [DataMember(Order = 1)]
        public string City { get; set; }
        [DataMember(Order = 2)]
        public string Country { get; set; }
        [DataMember(Order = 3)]
        public string Details { get; set; }
    }
}

 

2.JSON幫助類 核心代碼數組

      /// <summary>
      /// Json轉換成對象
      /// </summary>
      /// <typeparam name="T"></typeparam>
      /// <param name="jsonText"></param>
      /// <returns></returns>
        public static T JsonToObject<T>(string jsonText)
        {
            DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
            T obj = (T)s.ReadObject(ms);
            ms.Dispose();
            return obj;
        }
        /// <summary>
        /// 對象轉換成JSON
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ObjectToJSON<T>(T obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            string result = string.Empty;
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, obj);
                ms.Position = 0;

                using (StreamReader read = new StreamReader(ms))
                {
                    result = read.ReadToEnd();
                }
            }
            return result;
        }

3.調用 spa

 

            //1.對象-->JSON
            UserInfo info = new UserInfo
            {
                Age = 10,
                Gender = 1,
                UserName = "劉德華",
                Lover = new List<string> { "美女1", "美女2", "美女3" },
                Address = new ContactAddress
                {
                    Province = "湖南省",
                    City = "長沙市",
                    Country = "望城縣",
                    Details = "某旮旯快遞找不到的地方"
                },
                DailyRecord = new Dictionary<string, string> { { "星期一", "吃飯" }, { "星期二", "洗衣服" }, { "星期三", "好事情" } }
            };
        
            string json = ObjectToJSON<UserInfo>(info);

 4.反序列化後的結果code

{"UserName":"劉德華","Age":10,"Gender":1,"Lover":["美女1","美女2","美女3"],"Address":{"Province":"湖南省","City":"長沙市","Country":"望城縣","Details":"某旮旯快遞找不到的地方"},"DailyRecord":[{"Key":"星期一","Value":"吃飯"},{"Key":"星期二","Value":"洗衣服"},{"Key":"星期三","Value":"好事情"}]}
相關文章
相關標籤/搜索