VBA解析JSON数据(2)--正则表达式

161 篇文章 16 订阅
55 篇文章 4 订阅

上一篇博客【VBA解析JSON数据(1)】讲到过:JSON 本质是一个字符串(由花括号{}包裹起来),解析JSON数据其实就是处理字符串。那么大家肯定会想起字符处理的神器——正则表达式。
示例JSON数据如下所示。

{
      "applySn": "粤G妆网备字2017050113",
      "applySnTT": "",
      "apply_enter_address": "",
      "enterpriseName": "广州市金日精细化工有限公司",
      "enterpriseNameTT": "",
      "is_off": "N",
      "newProcessid": "20170421153208vq3fu",
      "off_date": "",
      "org_name": "",
      "processid": "20170421153208vq3fu",
      "productName": "悠莅雅柔美亮肤按摩霜",
      "productNameTT": "",
      "provinceConfirm": "2017-05-17"
}

示例代码如下。

Sub JSON_RegExp()
    Dim Res()
    Dim objRegEx As Object
    Dim objMH As Object
    Dim j As Integer
    Set objRegEx = CreateObject("vbscript.regexp")
    objRegEx.Pattern = """(.*?)"": ""(.*?)"""
    objRegEx.Global = True
    Set objMH = objRegEx.Execute([A1].Value)
    ReDim Res(objMH.Count, 1 To 2)
    For j = 0 To objMH.Count - 1
        Res(j, 1) = objMH(j).submatches(0)
        Res(j, 2) = objMH(j).submatches(1)
    Next
    Range("A3:B3").Value = Array("Key", "Value")
    Range("A4").Resize(objMH.Count, 2).Value = Res
    Set objRegEx = Nothing
    Set objMH = Nothing
End Sub

代码解析
第6行代码创建正则表达式对象。
第7行代码指定正则匹配表达式,其中两个圆括号用于匹配需要提取的KEY和VALUE,双引号在VBA表达式中需要使用两个双引号。

“(.*?)”: “(.*?)”

第8行代码指定为全局搜索。
第9行代码对指定字符串进行匹配,结果保存在objMH对象中。
第10行代码重新定义结果数组的维度。
第11行到第14行循环结构将匹配结果写入数组。
第16行代码将结果写入工作表中A4单元格开始的区域。

运行示例代码,结果如下。
在这里插入图片描述


相关博文链接:
VBA解析JSON数据(1)-- Split函数
VBA解析JSON数据(2)–正则表达式
VBA解析JSON数据(3)–JavaScript
VBA解析JSON数据(4)–JavaScript进阶
VBA解析JSON数据(5)–JavaScript回写Excel

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值