WinForm_Json转换

文章介绍了如何在C#中使用Newtonsoft.Json库进行对象与JSON的转换,包括对象转为JSON和JSON转为对象的详细步骤及错误处理。
摘要由CSDN通过智能技术生成

这是个小Demo,主要是需要一个NuGet包

Newtonsoft.Json

包的版本无所谓,装最新的就行

页面设计如下

首先创建一个对象,属性数量跟页面的参数数量对应上就行。代码如下

    /// <summary>
    /// 需要转换的对象
    /// </summary>
    public class Data
    {
        /// <summary>
        /// 参数1
        /// </summary>
        public string params1 { get; set; }
        /// <summary>
        /// 参数2
        /// </summary>
        public string params2 { get; set; }
        /// <summary>
        /// 参数3
        /// </summary>
        public string params3 { get; set; }
    }

先写对象转为json,代码如下

        /// <summary>
        /// 转为json
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            // 判断参数有没有全被输入
            if (string.IsNullOrWhiteSpace(textBox1.Text) ||
                string.IsNullOrWhiteSpace(textBox2.Text) ||
                string.IsNullOrWhiteSpace(textBox3.Text))
            {
                MessageBox.Show("请输入全部参数哦");
                return;
            }
            // 将参数赋值给对象data
            Data data = new Data
            {
                params1 = textBox1.Text,
                params2 = textBox2.Text,
                params3 = textBox3.Text
            };
            // 转换为json
            string json = JsonConvert.SerializeObject(data);
            // 输出
            textBox4.Text = json;
        }

再写转为对象,代码如下

        /// <summary>
        /// 转为参数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            // 判断json有没有被输入
            if (string.IsNullOrWhiteSpace(textBox4.Text))
            {
                MessageBox.Show("请输入json哦");
                return;
            }
            Data data = new Data();
            // json转为对象,为了防止json有问题导致转换失败。使用try catch捕获异常
            try
            {
                data = JsonConvert.DeserializeObject<Data>(textBox4.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return;
            }
            // 转换成功后将对应参数赋值
            textBox1.Text = data.params1;
            textBox2.Text = data.params2;
            textBox3.Text = data.params3;
        }

至此Demo已经完成,主要的就是JsonConvert类的两个方法。SerializeObject是将对象转为json,DeserializeObject是将json转为对象。谢谢大家。

{"error":0,"status":"success","date":"2015-12-21","results":[{"currentCity":"上海","pm25":"205","index":[{"title":"穿衣","zs":"较冷","tipt":"穿衣指数","des":"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。"},{"title":"洗车","zs":"较适宜","tipt":"洗车指数","des":"较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"},{"title":"旅游","zs":"适宜","tipt":"旅游指数","des":"天气较好,但丝毫不会影响您出行的心情。温度适宜又有微风相伴,适宜旅游。"},{"title":"感冒","zs":"较易发","tipt":"感冒指数","des":"天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。"},{"title":"运动","zs":"较适宜","tipt":"运动指数","des":"天气较好,无雨水困扰,较适宜进行各种运动,但因气温较低,在户外运动请注意增减衣物。"},{"title":"紫外线强度","zs":"最弱","tipt":"紫外线强度指数","des":"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"}],"weather_data":[{"date":"周一 12月21日 (实时:6℃)","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/yin.png","weather":"多云转阴","wind":"东北风微风","temperature":"11 ~ 8℃"},{"date":"周二","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/xiaoyu.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/zhongyu.png","weather":"小雨转中雨","wind":"东风微风","temperature":"13 ~ 10℃"},{"date":"周三","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/xiaoyu.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/xiaoyu.png","weather":"小雨","wind":"北风微风","temperature":"12 ~ 10℃"},{"date":"周四","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/xiaoyu.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/xiaoyu.png","weather":"小雨","wind":"北风微风","temperature":"7 ~ 4℃"}]}]}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值