前言;看到很多C/S模式网站在给客户发送数据时都是以Json格式实现的,于是写了两种反序列化json格式的方法,方便用户自行处理关键数据。
1、winform设计
拖控件很简单,就不花时间了
2、添加引用
解决方案—右击“引用”—添加引用—(.NET)System.Web.Extensions—确定
在命名空间中加上: using System.Web.Script.Serialization;
3、完整代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web.Script.Serialization;
namespace JsonToDictionary
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//将json反序列成dictionary函数
private Dictionary<string, object> J2D(string jsondata)
{
//实例化JavaScriptSerializer类
JavaScriptSerializer jss = new JavaScriptSerializer();
//判断json数据
if (jsondata != null)
{
//将转换后的数据返回
return jss.Deserialize<Dictionary<string, object>>(jsondata);
}
else
{ return null; }
}
//JsonToDictionary方法
private void button1_Click(object sender, EventArgs e)
{
//string类型的key object类型的value
//调用函数
Dictionary<string, object> dic = J2D(textBox1.Text.Trim());
//遍历dictionary输出
foreach (var d in dic)
{
richTextBox1.AppendText(d.Key + ":" + d.Value+"\r\n");
}
}
//JsonToArray方法
private void button2_Click(object sender, EventArgs e)
{
if (textBox1.Text != null)
{
//分割字符串
string[] str = textBox1.Text.Split('{', '"', ':', '}', ',');
//循环输出
for (int i = 2; i < str.Length; i += 6)
{
richTextBox1.AppendText(str[i] + ":" + str[i + 3] + "\r\n");
}
}
else { }
}
}
}
4、验证程序
目标Json数据:{"id":"1","uid":"test","pwd":"123"}
两个的输出结果一样
PS:给大家提供了两种简单实用的方法,在正式编程时最好加上容错的方法,这个比较简单,相信大家都会。