[c#] json序列化(得到json字符串)、反序列化(得到实体类对象)

本文介绍了一个基于C#的HTTP请求工具类的封装及其实现,并演示了如何使用Newtonsoft.Json库对获取到的JSON数据进行解析。此外,还展示了如何创建JSON实体类以及序列化过程。

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

  1. 参见上一篇博客中对HttpUtils.cs的类封装,引入System.Net命名空间,根据HttpWebRequest和HttpWebResponse和已知的接口url设计静态string Get(string url) 和string Post(string url) 方法

  2. 根据返回的json格式数据,用json实体类生成工具来生成json实体类jsonModel.cs

  3. 在窗口项目中引入Newtonsoft.Json,方法是在项目的“引用”上右键Nuget包管理,搜索并安装。然后在窗体后台程序中引入命名空间。

  4. 在函数中实用HttpUtils.cs中的Get方法得到json的字符串,然后调用Newtonsoft.Json中的函数进行json数据的解析(反序列化过程),实现如下:


private void button2_Click(object sender, EventArgs e)
        {
            //我们的接口
            string url = "http://www.kuaidi100.com/query?type=shunfeng&postid=367847964498";


            //将接口传入,得到Json字符串
            string getJson = HttpUitls.Get(url);

            //传入我们的实体类还有需要解析的JSON字符串,然后就可以通过实体类使用数据了
            Models.Root rt = JsonConvert.DeserializeObject<Root>(getJson);  //调用jsonconvert里的反序列化函数,将json字符串赋值给实体对象


            //在消息Box中展示
            MessageBox.Show("com=" + rt.com + "\r\n" + "condition=" + rt.condition + "\r\n" + "ischeck=" + rt.ischeck + "\r\n" + "state=" + rt.state + "\r\n" +
                "status=" + rt.status);

            //这个root对象有一个dataItem类型的list变量,需要遍历输出
            for(int i = 0; i < rt.data.Count; i++)
            {
                MessageBox.Show("Data=" + rt.data[i].context + "\r\n" + rt.data[i].location + "\r\n" + rt.data[i].time + "\r\n" + rt.data[i].ftime);
            }
        }
  1. 序列化的过程是准备好已封装好数据的实体对象,然后调用 JsonConvert.SerializeObject(object)函数进行序列化过程,返回json字符串
private void button3_Click(object sender, EventArgs e)
        {
            Root rt = new Root();
            rt.com = "MyCom......";
            rt.condition = "MyCondition......";
            rt.ischeck = "Myischeck......";
            rt.message = "Mymessage......";
            rt.state = "Mysatate......";
            rt.status = "Mystatcs......";
            List<DataItem> data = new List<DataItem>();
            DataItem dt = new DataItem();
            dt.context = "DataItem的Context内容......";
            dt.time = "这个是我赋值的时间";
            dt.ftime = "这个是我赋值的时间";
            data.Add(dt);

            rt.data = data;


            //用一个string对象保存序列化好的json格式数据
            string json = JsonConvert.SerializeObject(rt);
            MessageBox.Show(json);

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值