C#中JSON格式转换

Json库引用

借助NuGet 程序包添加json库文件,添加引用  using Newtonsoft.Json;

Dictionary字典类型的相互转换

转换代码:

public static class JsonUntity
    {
        /// <summary>
        /// 将字典类型序列化为json字符串
        /// </summary>
        /// <typeparam name="TKey">字典key</typeparam>
        /// <typeparam name="TValue">字典value</typeparam>
        /// <param name="dict">要序列化的字典数据</param>
        /// <returns>json字符串</returns>
        public static string SerializeDictionaryToJsonString<TKey, TValue>(Dictionary<TKey, TValue> dict)
        {
            if (dict.Count == 0)
                return "";

            string jsonStr = JsonConvert.SerializeObject(dict);
            return jsonStr;
        }

        /// <summary>
        /// 将json字符串反序列化为字典类型
        /// </summary>
        /// <typeparam name="TKey">字典key</typeparam>
        /// <typeparam name="TValue">字典value</typeparam>
        /// <param name="jsonStr">json字符串</param>
        /// <returns>字典数据</returns>
        public static Dictionary<TKey, TValue> DeserializeStringToDictionary<TKey, TValue>(string jsonStr)
        {
            if (string.IsNullOrEmpty(jsonStr))
                return new Dictionary<TKey, TValue>();

            Dictionary<TKey, TValue> jsonDict = JsonConvert.DeserializeObject<Dictionary<TKey, TValue>>(jsonStr);

            return jsonDict;

        }
    }

实体类Json转换 

JSON在线解析及格式化验证 - JSON.cn
可以在这个网址更清楚的查看JSON数据,另外还可以在这直接生成实体类,这里就不演示了

实体类:

 public class Jsondata//实体类1
    {

        public string Spec { get; set; }
        public string Uplimit { get; set; }
        public string Dnlimit { get; set; }
        public string Max { get; set; }
        public string Min { get; set; }

        public List<TestData> TestValue { get; set; }


    }

   public class TestData//实体类2
   {
       public string ItemCode { get; set; }
       public string Value { get; set; }
   }

 写入JSON格式数据:

            //引用Newtonsoft.Json
            //using Newtonsoft.Json;
            Jsondata js = new Jsondata();//实体类1
            //赋值
            js.Spec = "10";
            js.Uplimit = "15";
            js.Dnlimit = "5";
            js.Max = "12";
            js.Min = "8";

            List<string> dataAry = new List<string>();
            for (int i = 0; i < 3; i++)
            {
                dataAry.Add(new Random().Next(1, 10).ToString());//得到3个随机数
            }
            js.TestValue = new List<TestData>();//初始化
            for (int i = 0; i < dataAry.Count + 1; i++) //测试数据
            {
                TestData d = new TestData();//实体类2
                if (i < dataAry.Count)
                {
                    d.ItemCode = "值" + (i + 1);
                    d.Value = "22";
                    js.TestValue.Add(d);
                }
            }
            string strJson = JsonConvert.SerializeObject(js);//序列化转换成JSON格式
            textBox2.Text = strJson;

就得到如下的这一堆数据:
{“Spec”:“10”,“Uplimit”:“15”,“Dnlimit”:“5”,“Max”:“12”,“Min”:“8”,“TestValue”:[{“ItemCode”:“值1”,“Value”:“22”},{“ItemCode”:“值2”,“Value”:“22”},{“ItemCode”:“值3”,“Value”:“22”}]} 

JSON格式的解析 ,得到数据后下一步就是解析取其中的内容:

 //解析
 Jsondata rejs = JsonConvert.DeserializeObject<Jsondata>(strJson);//反序列化  
 string spc= rejs.Spec;//实体类1的值直接点出来就行了
//实体类2的值则需要循环遍历
List<string> list = new List<string>();
foreach (TestData item in rejs.TestValue)
{
  list.Add(item.ItemCode); 
  list.Add(item.Value);
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值