国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

vbs 解析json jsonp的方法

2020-06-26 18:38:55
字體:
來源:轉載
供稿:網友

昨天說了下用 htmlfile 來解析 html,今天依然用他來解析,htmlfile 是一個 COM 版的 BOM 和 DOM,所以解析 html, 執行 js 完全不在話下,今天就繼續解析 json 和 jsonp 吧

我收集了三種常見 json jsonp 的格式,因為很多人找我說如何用正則提取某個字符串,我看了下,要么是json,要么是jsonp,

正則簡直浪費,比如那種空間里說說的數據,上百條的信息,你正則個P,而且還有回復里的格式也差不多的,所以最好的方法還是解析。

先來看看常見的三種吧:

酷我音樂用戶信息 json 格式

http://kzone.kuwo.cn/mlog/UserVal?uid=1237357&from=profile

{"work":4,"fans":275,"lp":"{/"id/":1237357,/"username/":/"亂碼/",/"pic/":/"http://img3.kuwo.cn/star/userhead/57/55/1315554310390_1237357m.jpg/"}","art":4,"album":1,"fortune":342402,"article":0,"workVideo":1,"care":195,"workAudio":3,"view":1312997,"playlist":0,"listen":278962,"collect":1}

拍拍手機查詢接口 jsonp 格式

http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=13012345678&amount=10000&callname=cb

cb({mobile:'13012345678',province:'重慶',isp:'中國聯通',stock:'1',amount:'10000',maxprice:'0',minprice:'0'});

搜狐IP信息 js 格式

http://pv.sohu.com/cityjson

var returnCitySN = {"cip": "218.72.14.14", "cid": "330100", "cname": "浙江省杭州市"};

這幾種合適都可以通過 htmlfile 來解析,但是方法稍微有點差異。

先來解析第一種 json 格式的吧。

 

 
  1. Set html = CreateObject("htmlfile"
  2. Set http = CreateObject("Msxml2.ServerXMLHTTP"
  3.  
  4. http.open "GET""http://kzone.kuwo.cn/mlog/UserVal?uid=1237357&from=profile"False 
  5. http.send 
  6. strHtml = http.responseText ' 得到數據 
  7.  
  8. Set window = html.parentWindow 
  9. window.execScript "var json = " & strHtml, "JScript" ' 解析 json 
  10.  
  11. Set kuwo = window.json ' 獲取解析后的對象 
  12. WScript.Echo "訪問量:", kuwo.view, " 財富:", kuwo.fortune 

可以得到如下信息。

vbs 解析json jsonp的方法

再來看看 jsonp 的解析,jsonp其實只是多了一個回調函數而已,所以我們自定義一個函數解析他就可以了。

 

 
  1. Set html = CreateObject("htmlfile"
  2. Set http = CreateObject("Msxml2.ServerXMLHTTP"
  3. callback = "cb" 
  4. url = "http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=13012345678&amount=10000&callname=" & callback 
  5.  
  6. http.open "GET", url, False 
  7. http.send 
  8. strHtml = http.responseText ' 得到數據 
  9. ' cb({mobile:'13012345678',province:'重慶',isp:'中國聯通',stock:'1',amount:'10000',maxprice:'0',minprice:'0'}); 
  10. ' <!--[if !IE]>|xGv00|8030d7c308afc4a32846a715ff79e9a3<![endif]--> 
  11. ' 得到的是這樣的數據,所以要處理下 
  12. strHtml = Split(strHtml, vbLf)(0) ' 取第一行 
  13. Set window = html.parentWindow 
  14. window.execScript "function " & callback & "(o){json=o}""JScript" ' jsonp 回調函數、 
  15. window.execScript strHtml, "JScript" ' 解析 json 
  16.  
  17. Set json = window.json ' 獲取解析后的對象 
  18. WScript.Echo json.mobile, json.isp, json.province 

可以得到如下信息。

vbs 解析json jsonp的方法

最后看下 js 格式解析,這個是最簡單的,什么都不用做,但是你要知道他的變量名。

 

 
  1. Set html = CreateObject("htmlfile"
  2. Set http = CreateObject("Msxml2.ServerXMLHTTP"
  3.  
  4. http.open "GET""http://pv.sohu.com/cityjson"False 
  5. http.send 
  6. strHtml = http.responseText ' 得到數據 
  7. ' 得到 var returnCitySN = {"cip": "218.72.14.14", "cid": "330100", "cname": "浙江省杭州市"}; 
  8.  
  9. Set window = html.parentWindow 
  10. window.execScript strHtml, "JScript" ' 解析 js 
  11.  
  12. Set js = window.returnCitySN ' 獲取解析后的對象 
  13. WScript.Echo js.cname, js.cip, js.cid 

可以得到如下信息

vbs 解析json jsonp的方法

js 格式的是最簡單的,但要注意,變量名是他定的,所以你在 獲取解析后的對象 那一步,要寫上他的變量名。

json 格式,我們只要給他加上變量名然后解析即可。

jsonp 相對麻煩點,因為要寫一個自定義回調函數。

總的來說,方法差不多,只是解析部分稍微有點不同而已。

用 htmlfile 解析,是不是比 正則 方便?

以后玩 POST 別再用落伍的 instr+mid 或者 正則 去解析 html json了, htmlfile 才是王道。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥宁县| 潞西市| 舞阳县| 马边| 滦平县| 四子王旗| 漳浦县| 翁源县| 得荣县| 芮城县| 新郑市| 上犹县| 通山县| 德州市| 夏河县| 沁源县| 武安市| 曲周县| 信阳市| 闽清县| 克拉玛依市| 新乡市| 上高县| 富蕴县| 通山县| 麟游县| 玉田县| 深州市| 长乐市| 定陶县| 沙坪坝区| 丽江市| 吉木乃县| 通海县| 禹州市| 定边县| 金乡县| 高密市| 新乡县| 吉安县| 孟津县|