您的位置:首页 > 理论基础 > 计算机网络

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);

                        }

                    }

                }

                   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: