JSON本质上是按照JavaScript对象、数组书写的一堆字符串,很可惜VBA直到目前为止都没有相应解析的方法。对于简单的数据可以用split方法、或者使用正则表达式来提取,如果过于复杂就需要用JavaScript语言来解析了。


实现过程:

我们先请求一组JSON数据来分析解析过程:

1、先通过winhttp对象请求视频收藏夹一组JSON数据。

Sub json解析()Dim url$, data$url = "JSON数据的请求地址"data = getJSON(url)'拿到JSON数据
End SubFunction getJSON(url)With CreateObject("WinHttp.WinHttpRequest.5.1").Open "GET", url, True.send.WaitForResponsegetJSON = .ResponseTextEnd With
End Function

2、接着创建ScriptControl对象来使用 JavaScript语言。

3、用AddCode方法添加一段js代码,把JSON数据传入到js执行,var data变量接收JSON数据。后面使用js.eval方法获取想要的值。

4、我想要的数据都在medias数组里,根据js访问对象属性的方法:data.data.medias。然后获取该属性的长度Length,遍历每一个视频的基本信息

Sub json解析()Dim url$, data$url = Join([{"media_id=1017007045","pn=1","ps=20","order=mtime","type=0","tid=0","platform=web","jsonp=jsonp"}], "&")data = getJSON(getHeader() & url) '拿到JSON数据Dim sht As Object, js As Object, l%, i%Set sht = ThisWorkbook.Sheets(1) '将Sheet1工作表对象赋值给sht变量sht.[A1:F1] = Array("up", "视频标题", "视频简介", "up主页", "视频封面", "视频ID") '设置表头'以下是解析JSON的过程Set js = CreateObject("ScriptControl") '------------------------创建ScriptControl对象来使用JavaScript语言js.Language = "JScript" '---------------------------------------设置JavaScript语言js.AddCode "var data=(" & data & ");var list=data.data.medias" '添加js代码,这里是把JSON数据传递给js变量,需要的视频列表在medias属性里面l = js.eval("a=list.length") '获取list数组长度With shtFor i = 0 To l - 1 '在js中,数组索引由0开始,所以-1.Cells(i + 2, 1) = js.eval("a=list[" & i & "].upper.name") 'up.Cells(i + 2, 2) = js.eval("a=list[" & i & "].title") '视频标题.Cells(i + 2, 3) = js.eval("a=list[" & i & "].intro") '视频简介.Cells(i + 2, 4) = js.eval("a=list[" & i & "].upper.mid") 'up主页.Cells(i + 2, 5) = js.eval("a=list[" & i & "].cover") '视频封面.Cells(i + 2, 6) = js.eval("a=list[" & i & "].bvid") '视频IDNext.Rows("1:" & l + 2).RowHeight = 13.5 '设置行高End WithEnd SubFunction getHeader()getHeader = Join([{"htt","ps://ap","i.bili","bili.c","om/","x/v3/fav/resource/list?"}], "")
End FunctionFunction getJSON(url As String)With CreateObject("WinHttp.WinHttpRequest.5.1").Open "GET", url, True.send.WaitForResponsegetJSON = .ResponseTextEnd With
End Function

解析后的效果:

Excel VBA解析JSON数据相关推荐

  1. json数据解析_VBA 实践指南 -- Split函数解析Json数据

    什么是JSON? JSON(JavaScript Object Notation) 是一种及其轻量级的数据交换格式,它是 ECMAScript (欧洲计算机协会制定的JavaScript规范)的一个子 ...

  2. excel解析html代码,使用excel vba解析HTML的错误

    因此,由于受到约束,我需要使用excel vba解析一些丑陋的html. HTML的问题在于它没有元素ID.我有一个拥有许多无标签表格的页面,每个表格都有几行.我可以建立的唯一的事情是,我需要在其中一 ...

  3. 深入分析jquery解析json数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: {"comments":[{& ...

  4. java构造和解析json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  5. Gson解析JSON数据中动态未知字段key的方法

    转载自:https://blog.csdn.net/jdsjlzx/article/details/76785239 有时在解析json数据中的字段key是动态可变的时候,由于Gson是使用静态注解的 ...

  6. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  7. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  8. json解析详解 java_Java解析Json数据的两种方式详解

    JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...

  9. JAVA 解析JSON数据

    JSON 是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java 语言中解析json数 ...

最新文章

  1. nohup后台运行以及重定向标准输出和标准异常
  2. 探索webpack热更新对代码打包结果的影响(二)
  3. JavaScript运算符优先级需要记吗
  4. bpsk调制matlab,matlab BPSK 调制与解调
  5. ScreenToClient
  6. STM32集成开发环境 STM32CubeIDE 快速配置索引
  7. Meta-Tracker: Fast and Robust Online Adaptation for Visual Object Trackers 论文
  8. 对于课程签到设置合理性的调查报告
  9. APP地推的一些方式
  10. 软件测试工程师应该怎样规划自己?成为年薪30W+测试工程师(乾坤未定,皆是黑马)
  11. 行列式因子、不变因子、初等因子、smith标准型、Jordan标准型、最小多项式的matlab实现
  12. java 与或非_JAVA 或与非运算符 与()、或(|)、异或(^)
  13. (5.7)mysql高可用系列——MySQL中的GTID复制(理论篇)【转】
  14. 国产手机:联想式的浮夸应该…
  15. 数据库(外键及其约束理解)
  16. 控制面板快捷键win10_win10的Microsoft兼容性遥测占用大量资源?这样解决
  17. 东南大学计算机考研调剂,东南大学考研调剂信息
  18. 一文步入python大门,基础教程大全(25分钟)
  19. 6.4应用实例:六度空间
  20. Elasticsearch:Search-as-you-type 字段类型

热门文章

  1. MySQL之窗口函数
  2. VC获取其它程序窗口焦点方法 AttachThreadInput的用法
  3. 合并两个有序链表(C语言)
  4. windowbuilder安装过程及常见问题解决
  5. PySpark算子处理空间数据全解析(2): 啥是算子(1):RDD
  6. 使用 纯JQuery 进行 表单 验证
  7. 盘点西瓜微数新功能。粉丝画像优化,新增品牌投放追踪功能
  8. 艺术平面素材|梦幻粉色手机屏幕海报
  9. 浅析 Laravel 底层原理:契约(Contracts)
  10. html制作在线播放,如何使用Jquery制作简单的HTML播放列表