最近做微信支付,要获取用户的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":,
"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数据的更多相关文章

  1. Go语言使用匿名结构体解析JSON数据

    手机拥有屏幕.电池.指纹识别等信息,将这些信息填充为 JSON 格式的数据.如果需要选择性地分离 JSON 中的数据则较为麻烦.Go 语言中的匿名结构体可以方便地完成这个操作. 首先给出完整的代码,然 ...

  2. 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称

    说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...

  3. Netflix Falcor获取JSON数据

    Netflix开源了JavaScript库Falcor,它为从多个来源获取JSON数据提供了模型和异步机制. Netflix利用Falcor库实现通过JSON数据填充他们网页应用的用户界面.所有来自内 ...

  4. Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据

    jquery.tmpl.js 是一个模板js  ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...

  5. android客户端从服务器端获取json数据并解析的实现代码

    今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下   首先客户端从服务器端获取json数据 1.利用HttpUrlConnection /** * 从指定的U ...

  6. (转)android客户端从服务器端获取json数据并解析的实现代码

    今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下       首先客户端从服务器端获取json数据 1.利用HttpUrlConnection   复制代码 ...

  7. android客户端从服务器端获取json数据并解析的实现代码(重要)

    首先客户端从服务器端获取json数据 1.利用HttpUrlConnection /** * 从指定的URL中获取数组 * @param urlPath * @return * @throws Exc ...

  8. JS-利用ajax获取json数据,并传入页面生成动态tab

    封装好的:ajax.js function ajax(url, fnSucc,fnFaild){ //1[创建] if(window.XMLHttpRequest){ var oAjax = new ...

  9. ajax获取json数据为undefined--原因解析

    解决办法:var dataObj=eval("("+data+")");//转换为json对象 问题: 1. 碰到一个问题ajax成功获取json数据后,取值显 ...

随机推荐

  1. 【引】objective-c,3:关于block

    原文参考博文: http://blog.devtang.com/2013/07/28/a-look-inside-blocks/ http://www.cnblogs.com/kesalin/arch ...

  2. javaIO-学习笔记

    package IOTest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream ...

  3. Thread系列之Thread.Sleep(0)

    线程这一概念,可以理解成进程中的一个小单元.这个单元是一个独立的执行单元,但是与进程中的其他线程共享进程中的内存单元. 由于Cpu资源是有限的,所以进程中的多个线程要抢占Cpu,这也导致进程中的多个线 ...

  4. php区分new static 和new self

    关键点在于一个是静态绑定,一个是延迟绑定 <?php class A{ public function __construct() { } public function createObjSt ...

  5. tomcat跨域请求

    tomcat A请求tomcat B中的数据(本人是在同一台机器上2个tomcat端口不同,在不同机器上有时间会测得) 博主用的是ajax请求 在A 请求B中数据,用下面的方法可以 在被请求的tomc ...

  6. CAD厂商的一丢丢笔记

    Cadence Cadence是个公司名,产品有: OrCAD,画原理图的 Allegro,画PCB的,PrintedCircuitBoard. Mentor,暂时还不知道画什么的 Autodesk ...

  7. HTML 动态云启动画面

    效果如下: 代码下载:http://files.cnblogs.com/files/zjfree/yun_loading.rar

  8. ES6特性

    一.ES6特性: let, const, class, extends, super, arrow functions, template string, destructuring, default ...

  9. 待研究:insert客商账户触发器增加条件提示为空

    增加客商时候重名不给保存,增加修改条件提示找不到

  10. mysql删造成表死锁研究

    现在互联网公司对于代码的管理越来越规范,一般都会有3个环境:开发环境,测试环境,正式环境.在开发环境进行开发,开发完成后将代码提交到测试环境进行测试,测试完毕后上线到正式环境. 今天在正式环境上遇到一 ...