将字典类型(Dictionary)类型数据序列化为json数据及拼接为key1=value1&key2=value2的两种方法

本文介绍了两种方法将字典类型数据处理:一是使用序列化将其转换为Json字符串,需要引用System.Web.Extensions并进行相应设置;二是将字典的key-value以&进行连接,提供了两种不同的实现方式。在操作过程中,可能会遇到的bug及解决方案也一并给出。

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

一、序列化为Json字符串

当需要将对象转为{ "street": "科技园路.", "city": "江苏苏州", "country": "中国"}这种格式时使用序列化(不引入外部dll的方式)

        public static String SerializeObject(Object o)
        {
            System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
            String jsonString = json.Serialize(o);
            return jsonString;
        }       

在使用上述方法之前先得添加引用“System.Web.Extensions”,然后还得在类前面增加using System.Web;
这里写图片描述

反序列化为指定对象

JavaScriptSerializer js = new JavaScriptSerializer();
Student model = js.Deserialize< Student>(jsonStr);// //反序列化

二、将字符串key、value进行&连接

两个方法大同小异
方法一:

private string dataToString(Dictionary<string,string> data)
        {
            StringBuilder sub = new StringBuilder();
            foreach (string s in data.Keys)
            {
                if (sub.Length > 0)
                {
                    sub.Append("&");
                }
                sub.Append(System.Web.HttpUtility.UrlEncode(s) + "=" + System.Web.HttpUtility.UrlEncode(data[s].ToString()));
            }
            return sub.ToString();
      }

方法2:

private string dataToString(Dictionary<string,string> data)
{
   StringBuilder buffer = new StringBuilder();  
                int i = 0;
                foreach (string key in data.Keys)  
                {  
                    if (i > 0)  
                    {
                        buffer.AppendFormat("&{0}={1}", key, data[key]);  
                    }  
                    else  
                    {
                        buffer.AppendFormat("{0}={1}", key, data[key]);  
                    }  
                    i++;  
                }
                return buffer.ToString();
}

运行结果
这里写图片描述

ps,遇到的bug:
这里写图片描述
解决方法:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值