C# http请求 + json序列化反序列化
2017-07-27 17:05
531 查看
最近公司游戏需要和php后台实现邮件功能,就在搞http请求和json的解析
其实很简单,就是一个函数,给出代码,这个是getHttp的,Post和另外三种模式的自己去网上搜索就行了
public string GetHttp(string url)
{
try
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "GET";
httpWebRequest.Timeout = 20000;
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
string responseContent = streamReader.ReadToEnd();
httpWebResponse.Close();
streamReader.Close();
return responseContent;
}
catch (Exception ex)
{
//Log.Error(ex.ToString());
return "0";
}
}
然后就是json的序列化和反序列化
首先引入命名空间
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
然后就是string result =GetHttp(URL);
这个URL就是你的http请求的网址。
然后就是解析了
JObject jo = (JObject)JsonConvert.DeserializeObject(result );
我是在VS中查看好的,我们访问后是这样的,
{"code":0,"data":4}
所以解析的时候就是:
string code = jo["code"].ToString();
string data = jo["data"].ToString();
然后这个code就是字符串"0" ,data就是字符串"4"
然后问题来了,如果是数组怎么解析呢?
也是一样的
假设data里面是一个数组,json中数组是用 [ ] 起来的,[ ] 里面的是包含很多个元素的数组!!!,举例一下就是
{"code":0,"data":[{"id":"5263","award":"0,11111","dateTime":"2017-07-27 16:09:23","mail":"3","state":"0","label":"3","url":"","platform":"0"},{"id":"5264","award":"0,11111","dateTime":"2017-07-27
16:05:02","mail":"2","state":"0","label":"2","url":"","platform":"0"},{"id":"5265","award":"0,11111","dateTime":"2017-07-27 16:03:00","mail":"1","state":"0","label":"1","url":"","platform":"0"},{"id":"5266","award":"0,11111","dateTime":"2017-07-27 14:59:12","mail":"1","state":"0","label":"1","url":"","platform":"0"}]}
然后上面这段东西解析的代码就是
JArray ja = (JArray)JsonConvert.DeserializeObject(data);
这时候ja就是普通的可以识别的数组了
然后ja[0]["id"]就是你数组第一个元素的id!!
简单吧!
下面是全部代码
JObject jo = (JObject)JsonConvert.DeserializeObject(EmailListResult);
string code = jo["code"].ToString();
string data = jo["data"].ToString();
if (data != null)
{
JArray ja = (JArray)JsonConvert.DeserializeObject(data);
if (ja != null)
{
for (int i = ja.Count - 1; i >= 0; --i)
{
MailItem mailInfo = new MailItem();
mailInfo.id = int.Parse(ja[i]["id"].ToString());
mailInfo.award = ja[i]["award"].ToString();
mailInfo.sendtime = ja[i]["dateTime"].ToString();
mailInfo.content = ja[i]["mail"].ToString();
mailInfo.attachStatus = int.Parse(ja[i]["state"].ToString());
mailIn
9c42
fo.title = ja[i]["label"].ToString();
mailInfo.labelPic = ja[i]["url"].ToString();
receiveMailList.Add(mailInfo);
}
}
}
其实很简单,就是一个函数,给出代码,这个是getHttp的,Post和另外三种模式的自己去网上搜索就行了
public string GetHttp(string url)
{
try
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "GET";
httpWebRequest.Timeout = 20000;
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
string responseContent = streamReader.ReadToEnd();
httpWebResponse.Close();
streamReader.Close();
return responseContent;
}
catch (Exception ex)
{
//Log.Error(ex.ToString());
return "0";
}
}
然后就是json的序列化和反序列化
首先引入命名空间
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
然后就是string result =GetHttp(URL);
这个URL就是你的http请求的网址。
然后就是解析了
JObject jo = (JObject)JsonConvert.DeserializeObject(result );
我是在VS中查看好的,我们访问后是这样的,
{"code":0,"data":4}
所以解析的时候就是:
string code = jo["code"].ToString();
string data = jo["data"].ToString();
然后这个code就是字符串"0" ,data就是字符串"4"
然后问题来了,如果是数组怎么解析呢?
也是一样的
假设data里面是一个数组,json中数组是用 [ ] 起来的,[ ] 里面的是包含很多个元素的数组!!!,举例一下就是
{"code":0,"data":[{"id":"5263","award":"0,11111","dateTime":"2017-07-27 16:09:23","mail":"3","state":"0","label":"3","url":"","platform":"0"},{"id":"5264","award":"0,11111","dateTime":"2017-07-27
16:05:02","mail":"2","state":"0","label":"2","url":"","platform":"0"},{"id":"5265","award":"0,11111","dateTime":"2017-07-27 16:03:00","mail":"1","state":"0","label":"1","url":"","platform":"0"},{"id":"5266","award":"0,11111","dateTime":"2017-07-27 14:59:12","mail":"1","state":"0","label":"1","url":"","platform":"0"}]}
然后上面这段东西解析的代码就是
JArray ja = (JArray)JsonConvert.DeserializeObject(data);
这时候ja就是普通的可以识别的数组了
然后ja[0]["id"]就是你数组第一个元素的id!!
简单吧!
下面是全部代码
JObject jo = (JObject)JsonConvert.DeserializeObject(EmailListResult);
string code = jo["code"].ToString();
string data = jo["data"].ToString();
if (data != null)
{
JArray ja = (JArray)JsonConvert.DeserializeObject(data);
if (ja != null)
{
for (int i = ja.Count - 1; i >= 0; --i)
{
MailItem mailInfo = new MailItem();
mailInfo.id = int.Parse(ja[i]["id"].ToString());
mailInfo.award = ja[i]["award"].ToString();
mailInfo.sendtime = ja[i]["dateTime"].ToString();
mailInfo.content = ja[i]["mail"].ToString();
mailInfo.attachStatus = int.Parse(ja[i]["state"].ToString());
mailIn
9c42
fo.title = ja[i]["label"].ToString();
mailInfo.labelPic = ja[i]["url"].ToString();
receiveMailList.Add(mailInfo);
}
}
}
相关文章推荐
- C#序列化和反序列化json
- c#中的Json的序列化和反序列化
- c# Json 自定义类作为字典键时,序列化和反序列化的处理方法
- C# 使用JSON对数据序列化和反序列化.
- ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON
- C#中json字符串的序列化和反序列化
- C#实现json的序列化和反序列化
- C#实现json的序列化和反序列化
- C#实现json的序列化和反序列化实例代码
- C#Json序列化、反序列化之Dictionary 字典类型
- C# 编写通用的JSON数据进行序列化和反序列化
- C#实现JSON序列化与反序列化介绍
- c#中的Json的序列化和反序列化
- [asp.net]C#实现json的序列化和反序列化
- C#中的Json的序列化和反序列化
- C# 序列化/反序列化 json
- C#实现的json序列化和反序列化代码实例
- [asp.net]C#实现json的序列化和反序列化
- C# 对象的序列化与反序列化 (DataContractJsonSerializer)
- C#中JSON序列化和反序列化