-
参见上一篇博客中对HttpUtils.cs的类封装,引入System.Net命名空间,根据HttpWebRequest和HttpWebResponse和已知的接口url设计静态string Get(string url) 和string Post(string url) 方法
-
根据返回的json格式数据,用json实体类生成工具来生成json实体类jsonModel.cs
-
在窗口项目中引入Newtonsoft.Json,方法是在项目的“引用”上右键Nuget包管理,搜索并安装。然后在窗体后台程序中引入命名空间。
-
在函数中实用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);
}
}
- 序列化的过程是准备好已封装好数据的实体对象,然后调用 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);
}