昨天说了下用 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 格式的吧。

Set html = CreateObject("htmlfile")
Set http = CreateObject("Msxml2.ServerXMLHTTP")

http.open "GET", "http://kzone.kuwo.cn/mlog/UserVal?uid=1237357&from=profile", False
http.send
strHtml = http.responseText ' 得到数据

Set window = html.parentWindow
window.execScript "var json = " & strHtml, "JScript" ' 解析 json

Set kuwo = window.json ' 获取解析后的对象
WScript.Echo "访问量:", kuwo.view, " 财富:", kuwo.fortune

可以得到如下信息。

再来看看 jsonp 的解析,jsonp其实只是多了一个回调函数而已,所以我们自定义一个函数解析他就可以了。

Set html = CreateObject("htmlfile")
Set http = CreateObject("Msxml2.ServerXMLHTTP")

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

http.open "GET", url, False
http.send
strHtml = http.responseText ' 得到数据
' cb({mobile:'13012345678',province:'重庆',isp:'中国联通',stock:'1',amount:'10000',maxprice:'0',minprice:'0'});
' <!--[if !IE]>|xGv00|8030d7c308afc4a32846a715ff79e9a3<![endif]-->
' 得到的是这样的数据,所以要处理下

strHtml = Split(strHtml, vbLf)(0) ' 取第一行

Set window = html.parentWindow
window.execScript "function " & callback & "(o){json=o}", "JScript" ' jsonp 回调函数、
window.execScript strHtml, "JScript" ' 解析 json

Set json = window.json ' 获取解析后的对象
WScript.Echo json.mobile, json.isp, json.province

可以得到如下信息。

最后看下 js 格式解析,这个是最简单的,什么都不用做,但是你要知道他的变量名。

Set html = CreateObject("htmlfile")
Set http = CreateObject("Msxml2.ServerXMLHTTP")

http.open "GET", "http://pv.sohu.com/cityjson", False
http.send
strHtml = http.responseText ' 得到数据
' 得到 var returnCitySN = {"cip": "218.72.14.14", "cid": "330100", "cname": "浙江省杭州市"};

Set window = html.parentWindow
window.execScript strHtml, "JScript" ' 解析 js

Set js = window.returnCitySN ' 获取解析后的对象
WScript.Echo js.cname, js.cip, js.cid

可以得到如下信息。

js 格式的是最简单的,但要注意,变量名是他定的,所以你在 获取解析后的对象 那一步,要写上他的变量名。
json 格式,我们只要给他加上变量名然后解析即可。
jsonp 相对麻烦点,因为要写一个自定义回调函数。

总的来说,方法差不多,只是解析部分稍微有点不同而已。
用 htmlfile 解析,是不是比 正则 方便?

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

vbs 解析 json jsonp 方法相关推荐

  1. 【Android】 Gson的引用 / 插件GsonFormat / 使用 / GsonFormat解析Json的方法和使用

    一.Gson的引入 方法一 File -> Project Structure -> Dependencies -> Library Dependency -> 在搜索框中输入 ...

  2. JavaScript解析JSON格式方法

    JSON数据 let result='{ uid: 2, password: "1234652", money: 136332.3, username: "star2&q ...

  3. linux下json数据解析,Linux下使用jq简单解析json的方法

    jq简介 jq 是一款命令行下处理 JSON 数据的工具.其可以接受标准输入,命令管道或者文件中的 JSON 数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将结果输出 ...

  4. VC++ 解析JSON 学习总结

    介绍 JSON http://www.json.org/json-zh.html JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时 ...

  5. C++ 解析Json

    C++ 解析Json--jsoncpp JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析jso ...

  6. java 解析json字符串

    初学java,参考网上的博客,总结解析json的方法.参考地址: http://blog.csdn.net/walkcode/article/details/8606752 1.例子: { " ...

  7. ​C++ 解析Json——jsoncpp​

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录. Jsoncpp是个 ...

  8. html页面解析json,JavaScript如何解析json?

    javascript如何解析json?下面本篇文章就来给大家介绍一下使用javascript解析json的方法,希望对大家有所帮助. 什么是JSON?JSON 指的是 JavaScript 对象表示法 ...

  9. 常用的三种数据库创建存储过程并解析json

    此文章包含MySQL.Oracle和Sql Server这三种数据库的创建json格式入参并解析的主子表存储 文章目录 此文章包含MySQL.Oracle和Sql Server这三种数据库的创建jso ...

最新文章

  1. Windows Phone开发(36):动画之DoubleAnimation 转:http://blog.csdn.net/tcjiaan/article/details/7521388...
  2. php 消息中间件,消息中间件NMQ
  3. 多看看把,条件太多了--leetcode 93. 复原 IP 地址
  4. 女生做产品经理好吗_请做产品经理,别做功能经理
  5. Android HandlerThread 源码分析
  6. java script的trim_Javascript中实现trim()函数的两种方法
  7. iOS事件机制,以及不同手势使用touchesBegan等表现形式
  8. 拓端tecdat|stata马尔可夫Markov区制转移模型分析基金利率
  9. 火狐中jq的attr出现的bug问题用prop代替
  10. suspend java_Java线程stop和suspend的废弃
  11. python实现动态壁纸_Python 实现macOS Catalina 动态壁纸定时设置
  12. 计算机专业实习日记,计算机专业实习日记精选
  13. matlab fft时域采样,信号时域采样 谱分析(matlab).doc
  14. st7789屏幕使用方法
  15. POI excel 添加水印 xls,xlsx
  16. 为你的TabBar添加Badge-感谢分享
  17. 微信手机端调试工具-微信Web开发者工具使用教程
  18. JAVAweb开发学习
  19. 收藏 |7本 Matlab入门经典教程书籍,不可错过!
  20. setsockopt用法描述

热门文章

  1. Android studio R文件丢失或错误解决方法
  2. 为什么ConcurrentHashMap没有ConcurrentHashSet
  3. 在C#中解析命令行参数的最佳方法? [关闭]
  4. mycat-sublun数据库分片
  5. import maven project很慢_你确定 Maven 相关的东西全部了解吗?
  6. matlab处理hdf5数据画图,读取行的最佳HDF5数据集块形状
  7. post请求需要加密吗_你需要吗?这款闪存盘不仅可以专业加密,还能云备份
  8. 洛谷——P2433 【深基1-2】小学数学 N 合一
  9. 洛谷——P1304 哥德巴赫猜想
  10. JavaWeb的JSP原理,详细解析(建议收藏)