C# json的序列化与反序列化 字典集合,类型集合

该博客介绍了如何在C#中使用Newtonsoft.Json库进行字典和列表类型的Json序列化与反序列化。示例代码展示了如何将Dictionary<string, object>转换为Json字符串,以及如何将Json字符串解析回Dictionary<string, object>。同时,还展示了如何序列化和反序列化Person对象的列表。" 381160,25297,开发指南:创建自定义传输过滤器(Transform Filter),"['DirectX Media Object', '视频处理', '音频处理', '数据转换', '编程接口']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using System.Web.Script.Serialization;
using Newtonsoft.Json;


namespace jsonStudy
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, object> hashMap = new Dictionary<string, object>();
            hashMap.Add("Name", "测试名称");
            hashMap.Add("Age", 23);
            hashMap.Add("pen", new string[] { "钢笔", "圆珠笔" });
            Console.WriteLine(DictionaryToJson(hashMap));
            string jsonData = DictionaryToJson(hashMap);
            Dictionary<string, object> jsonObj = JsonToDictionary(jsonData);
            Console.WriteLine(jsonObj.Count);


            Console.ReadKey();
            List<Person> listPerson = new List<Person>() {
                new Person() {Name="一号",Age=1,pen= new string[] { "钢笔1", "圆珠笔1" } },
                new Person() {Name="二号",Age=2,pen= new string[] { "钢笔2", "圆珠笔2" } }
            };




            String jsonDataList = JsonConvert.SerializeObject(listPerson);
            Console.ReadKey();
            var persons = JsonConvert.DeserializeObject<List<Person>>(jsonDataList);
            int count = 0;
            foreach (Person item in persons)
            {
                count++;
                Console.WriteLine("第"+count+"个的年龄"+item.Age);


            }


        }
        #region 将Dictionary序列化为json数据  
        /// <summary>
        /// 将Dictionary序列化为json数据
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        private static string DictionaryToJson(Dictionary<string, object> dic)
        {
            //实例化JavaScriptSerializer类的新实例  
            JavaScriptSerializer jss = new JavaScriptSerializer();
            try
            {
                //将指定的 JSON 字符串转换为 Dictionary<string, object> 类型的对象  
                return jss.Serialize(dic);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        #endregion


        #region 将json数据反序列化为Dictionary 
        /// <summary>
        /// 将json数据反序列化为Dictionary 
        /// </summary>
        /// <param name="jsonData"></param>
        /// <returns></returns>
        private static Dictionary<string, object> JsonToDictionary(string jsonData)
        {
            //实例化JavaScriptSerializer类的新实例  
            JavaScriptSerializer jss = new JavaScriptSerializer();
            try
            {
                //将指定的 JSON 字符串转换为 Dictionary<string, object> 类型的对象  
                return jss.Deserialize<Dictionary<string, object>>(jsonData);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        #endregion
    }
    public class Person {


        public string Name { get; set; }
        public int Age { get; set; }
        public string[] pen { get; set; }
    }
  


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值