ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南

[分享] 纯vba代码解析json格式数据

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-29 15:19 | 显示全部楼层
liucqa 发表于 2019-4-29 15:08
那你改一下代码啊,加个VBA7和Win64条件编译

嗯~~~~~~~~~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-29 15:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
32/64位office通用

JSON(64-31位通用).zip

46.91 KB, 下载次数: 870

TA的精华主题

TA的得分主题

发表于 2019-4-29 18:24 | 显示全部楼层

有时间你可以测试一下,你的代码和htmlfile相比起来效率和支持的数据类型哪个更好

TA的精华主题

TA的得分主题

发表于 2019-4-29 19:46 | 显示全部楼层
为了操作浏览器,我也写了一个JSON的类,思路有点不同,不过这个都不是重点,主要是测试解析JSON数据源挺有意思,你也可以去试试,看你的这个类解析JSON需要多长时间、能不能完整解析、会不会出问题。。。
我在论坛找了很多JSON数据,其中网友“onlycxb”的帖子《东方财富网天天练》中有两个比较大的JSON数据,有个JSON数据有1000多kb,
帖子中的第4楼:“ 3.分级基金净值表(方法同开发式基金),JSON数据地址 http://fund.eastmoney.com/Data/F ... ;text=&sort=zdf,desc&page=1,10000000&dt=1425897162484&atfc=
这个有几十kb。
帖子中的第6楼:5.新股申购与中签查询,JSON数据地址 http://datainterface.eastmoney.c ... ;js=var%20rxSJdnPK={pages:(pc),data:[(x)]}&stat=1&rt=0.871455332
这个数据有1000多kb。

你可以去用你的类去解析、测试一下,挺有意思的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-5 11:47 | 显示全部楼层
vbexcelhome 发表于 2019-4-29 19:46
为了操作浏览器,我也写了一个JSON的类,思路有点不同,不过这个都不是重点,主要是测试解析JSON数据源挺有 ...

额,你这返回的数据不是json格式的字符串哦
下面这个网址是验证解析json格式数据的,你可以看下
https://www.json.cn

另外多说一句,你那个返回的是json对象,这样是为了前端js方便解析

我这个类的作用是将 json字符串 转换 成 对象

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-15 15:01 | 显示全部楼层
vbexcelhome 发表于 2019-4-29 19:46
为了操作浏览器,我也写了一个JSON的类,思路有点不同,不过这个都不是重点,主要是测试解析JSON数据源挺有 ...

今天又有时间了,你这个没必要自己再写个类,因为返回的是js代码,用js解析起来非常方便,10来行代码就行了
2.png

TA的精华主题

TA的得分主题

发表于 2019-5-15 19:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 vbexcelhome 于 2019-5-15 19:48 编辑
我是来讨说法的 发表于 2019-5-15 15:01
今天又有时间了,你这个没必要自己再写个类,因为返回的是js代码,用js解析起来非常方便,10来行代码就行 ...

JS解析挺好的。
不过操作浏览器需要生成JSON数据,所以JS不方便,我就想通过写这个小东西,来熟悉一下。
反正这个JSON类基本完善了,不仅可以生成编码,还可以解析数据,能直接按路径调用数据。下面是我获得歌曲列表的一段代码,简单、方便、清晰。
  1.     JSON.ParseJSON jsonCode '解析数据

  2.     Set arrList = JSON.GetAttributeObject("data\song\list") '获得歌曲数组
  3.    
  4.     For Each JSON In arrList.Childs
  5.    
  6.         SongInfo.SongName = JSON.GetAttributeValue("songname") '歌曲名字
  7.         SongInfo.AlbumName = JSON.GetAttributeValue("albumname") '歌曲专辑名字
  8.         SongInfo.Duration = SecToTime(JSON.GetAttributeValue("interval")) '歌曲时长
  9.         
  10.     Next
复制代码


TA的精华主题

TA的得分主题

发表于 2019-5-30 09:37 | 显示全部楼层
Dim jsonObject As New JSON
这一句报错 "编译错误:用户定义类型未定义"

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-30 10:52 | 显示全部楼层
tokido 发表于 2019-5-30 09:37
Dim jsonObject As New JSON
这一句报错 "编译错误:用户定义类型未定义"

里面有2个类模块,你为什么不导入?

TA的精华主题

TA的得分主题

发表于 2019-5-30 10:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不错不错,学习
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 16:54 , Processed in 0.037360 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表