VBA JSON 解析指南:如何三步装好 VBA-JSON 并用一个文件搞定解析与生成 VBA JSON 解析指南如何三步装好 VBA-JSON 并用一个文件搞定解析与生成【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSONVBA-JSON是给 VBA 做 JSON 解析与生成的开源库把JsonConverter.bas单文件导入 Excel 或 Access 就能用。本文按接到一份 API 返回的 JSON、取出字段、再写回 JSON这个任务把每一步走通。什么场景用得上 VBA JSON 解析最常见的四类场景看看你有没有中过Excel 拉数据天气、行情、物流接口返回的是 JSON而 VBA 没有内置解析器手写字符串截取到第二层嵌套就容易崩️Access 存配置想把用户选项写进一个 JSON 文件而不是在表里再开几十个字段向外输出工作表数据要转成 JSON 交给 Web 应用或第三方接口调用⚙️结构不可控数组里套对象、对象里套数组还夹着转义字符手动处理最难的就是它这些需求的共同点结构你控制不了但你又只能在没有 JSON 库的老环境里接住它。原理一句话解析器到底怎么工作VBA-JSON内部是一个字符级的状态机逐字符读取输入把 JSON 对象转成Dictionary、数组转成Collection取数时按键名或下标查就行。反向生成则遍历这两个容器拼回 JSON 字符串。所有逻辑都装在这一个模块里所以导入一个文件就够不需要额外组件。快速上手三步装好 VBA-JSON安装一次性完成共三步克隆仓库拿到源码git clone https://gitcode.com/gh_mirrors/vb/VBA-JSON打开 VBA 编辑器AltF11在工程上右键 → 导入文件选择仓库根目录的JsonConverter.bas。按系统补上依赖环境需要准备仅 Windows工具 → 引用勾选Microsoft Scripting RuntimeWindows Mac 通用引入 VBA-Dictionary 项目的Dictionary.cls怎么算装好了导入后按CtrlG切到代码窗、随便跑个空宏若编译无 Sub not defined 类报错环境就齐了——因为解析结果的承载容器正是Dictionary和Collection缺依赖时这一步必炸。一个例子跑通闭环解析、取值、生成下面这段是可直接运行的最小闭环输入一份 JSON、取三个值、改一个字段、再输出两种格式 1. 解析JSON 字符串进来对象变 Dictionary数组变 Collection Dim json As Object Set json JsonConverter.ParseJson({a:123,b:[1,2,3,4],c:{d:456}}) 2. 取值键直接访问数组按下标从 1 开始 Debug.Print json(a) 123 Debug.Print json(b)(2) 2 Debug.Print json(c)(d) 456 3. 改数据后序列化回字符串 json(c)(e) 789 Debug.Print JsonConverter.ConvertToJson(json, Whitespace:2) 带缩进的漂亮格式若输入不合法最常看到的是错误码10001Expecting { or [意思是解析器期待以对象或数组开头却遇到了别的字符——先检查字符串两端是否带了多余引号或空白。易踩的坑与可配置的开关精度丢失怎么避最容易翻车的是大数字精度问题。后果很隐蔽VBA 的Double只能可靠保存 15 位有效数字18 位的证件号、卡号若被当数字解析尾数会被静默改写数据直接作废。正确做法是保持库的默认行为——超过 15 位的纯数字一律按字符串返回需要数字时再显式打开开关。库提供三个全局配置挂在JsonConverter.JsonOptions上JsonConverter.JsonOptions.UseDoubleForLargeNumbers False 默认大数字按字符串 JsonConverter.JsonOptions.AllowUnquotedKeys False 默认键必须带引号 JsonConverter.JsonOptions.EscapeSolidus False 默认/ 不转义配置项默认值作用UseDoubleForLargeNumbersFalse打开后 15 位纯数字按 Double 返回会丢精度AllowUnquotedKeysFalse允许解析不带引号的键名EscapeSolidusFalse输出时把/转义为\/默认值全部偏向不丢数据宁可大数字是字符串也不悄悄截断键名严格按 JSON 规范校验防止脏输入把问题藏起来。自测与下一步用官方测试跑一遍想确认自己没理解偏去跑仓库的 specs/ 目录Specs.bas里写了数十组断言覆盖嵌套数组、转义引号、null值等打开同目录的VBA-JSON - Specs.xlsm执行即可这也是作者给 1100 行单文件库做回归测试的方式。接下来按清单推进导入JsonConverter.bas确认编译通过运行上面的闭环示例核对 Debug 窗口四个输出值输入一个 18 位纯数字确认它以字符串返回打开Specs.xlsm跑完整官方测试套件参照 README.md 的进阶例子读取一个.json文件并写入工作表【免费下载链接】VBA-JSONJSON conversion and parsing for VBA项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考