c# 利用結構體擷取json資料

來源:互聯網
上載者:User

標籤:

最近做支付,要擷取使用者的openid,調用介面後返回的是json格式的資料,我想在c#後台把資料逐一取出,網上查了查,找到以下方法:

1.首先調用介面,要有一個post資料到指定url並返回資料的函數:

    protected string PostXmlToUrl(string url, string postData)    {        string returnmsg = "";        using (System.Net.WebClient wc = new System.Net.WebClient())        {            returnmsg = wc.UploadString(url, "POST", postData);        }        return returnmsg;    }

post的資料格式可以是

url的參數格式(a=1&b=2&c=3....)

xml格式(<xml>....</xml>)

返回的資料格式由介面確定。

2.方法調用:

        string post_data = "appid=" + appId + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code";        string requestData = PostXmlToUrl("https://api.weixin.qq.com/sns/oauth2/access_token", post_data);

這個介面返回的資料是json格式的,所以得到的requestData就是一段json字串:

{   "access_token":"ACCESS_TOKEN",   "expires_in":7200,   "refresh_token":"REFRESH_TOKEN",   "openid":"OPENID",   "scope":"SCOPE"}

返回的資料裡面有我需要的openid,接下來利用結構體把openid取出。先定義結構體:

    public struct authorization    {        public string access_token { get; set; }  //屬性的名字,必須與json格式字串中的"key"值一樣。        public string expires_in { get; set; }        public string refresh_token { get; set; }        public string openid { get; set; }        public string scope { get; set; }    }

利用序列化資料的類JavaScriptSerializer將json資料轉化為物件類型:

        JavaScriptSerializer js = new JavaScriptSerializer();   //執行個體化一個能夠序列化資料的類        authorization auth = js.Deserialize<authorization>(requestData);    //將json資料轉化為物件類型並賦值給auth

這樣一轉化,對象auth裡面的4個屬性就會得到相應的值,如此,我就擷取到了介面返回來的openid,就可以在需要的地方使用它了:

        wxobPay.openid = auth.openid;

 

c# 利用結構體擷取json資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.