沉冰浮水

置百丈玄冰而崩裂,掷须臾池水而漂摇。

« 猩猩狗狗大冒险之体检篇2011年4月12日冷笑话合集 - 补习 »

【备忘】ASP操作JSON数据超简便方法

  首先想咆哮句:用ASP写网页的你真的真的真的尼玛伤不起啊。。今天终于尼玛搞定了豆瓣API的发送问题啊,,各种曲折啊。。我都懒得说啊。。。一个换行的理解就引发惨案啊。。我今天才看见每行结尾还有个逗号啊。。此处省略N个字啊。。。。

  此类API的意义在于你可以把豆瓣、腾讯微博、新浪微博什么的数据拿过来用,就像积木一样,搭出什么就看你的创意和能力了。。

  请求的数据会根据你的设置以JSON或者XML格式传递,当然本文只讲JSON,示例为腾讯API的SDK,地址见:http://www.wdssmq.com/txapi/

  登陆成功后可以看到输出的JSON字符串和摘取的部分用户信息,然后附上一个JSON在线格式化工具:http://jsonformatter.curiousconcept.com/,格式化后可以看到这种树形结构也不是很难阅读嘛。。

  JSON(JavaScript Object Notation)是基于JavaScript的一个字集,所以JS可以直接对其进行操作,而JS是可以与ASP一起在服务端远行的(Oauth授权时用到的HMAC-SHA1签名函数也是这样实现的)

<script language="javascript" type="text/javascript" runat="server">
function toObject(json) {
eval("var o=" + json);
return o;
}

function getItem(obj,Num,Name){
return obj[Num][Name];
}
</script>

  上边的函数已经包含在了SDK的base64.asp文件中(这个文件名是因为刚开始的理解错误,,就一直这么用了。。里边还有HMAC-SHA1签名函数),其他程序可选择存为单独文件或者和ASP代码放在一起(放在<%……%>外边)

  然后是ASP部分,直接复制的SDK中的,,toObject()的参数为JSON字符串,可对照格式化后的树形结构输出想要的部分,与data同级的msg和ret两个字段可分别使用get_user_info.msg和get_user_info.ret获得。

<%
Dim get_user_info
Set get_user_info = toObject(gethttp(get_oauth_url(user_info_url)))
Response.Write "昵称:"&get_user_info.data.nick & "<br/>"
Response.Write "帐号:"&get_user_info.data.name & "<br/>"
Response.Write "广播:"&get_user_info.data.tweetnum & "<br/>"
Response.Write "听众:"&get_user_info.data.fansnum & "<br/>"
Response.Write "收听:"&get_user_info.data.idolnum & "<br/>"
Response.Write "标签:"&getItem(get_user_info.data.tag,0,"name") & "<br/><br/>"
'想要标签全部输出的话可以做个循环,从0到9,不为空就输出并且继续。。
%>

  如果你的腾讯微博设置了个人标签,可以看到"tag"后边是以方括号包含的多组值,就像一个数组。。好吧,,这就是一个数组,在JS中可以用get_user_info.data.tag[0].name的方式获得其中的值,不过现在是在ASP中,虽然把JSON数组对象传递了过来,但是ASP好像没法操作,ASP中没有方括号的用法,圆括号不管用。。那就再用JS吧——JS部分的第二个函数。

  直接Response.Write get_user_info.data.tag会输出多个[object Object],好像是指用户自定义对象,把它传回JS,带上数组序号和字段名,然后返回相应的值——getItem(get_user_info.data.tag,0,"name")

  最后附上一个可以遍历对象的函数,按需要在服务器或者客户端运行。。两级不够再自己加。。

function viewObject(obj){ 
        var msg;
        for(var a in obj){ 
                msg += ' ' + a;
                for(var x in obj[a]){
                        msg += ' ' + x;
                        msg += ' ' + obj[a][x];
                }
        }
        return msg;
}

订阅是个好习惯--http://feed.wdssmq.com--

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

站内搜索

文章分类

最近发表

订阅本站


订阅本站

评论排行

GGAds

图标汇集

▲返回顶部

© 沉冰浮水 | 站点地图 | | 广告投放 | 联系博主 |
Powered By Z-Blog | Themeby BokeZhuti