精华内容
下载资源
问答
  • VBA解析JSON数据(2)--正则表达式

    千次阅读 2019-02-18 11:30:15
    上一篇博客【VBA解析JSON数据(1)】讲到过:JSON 本质是一个字符串(由花括号{}包裹起来),解析JSON数据其实就是处理字符串,那么大家肯定会想起字符处理的神奇–正则表达式。 示例JSON数据如下所示。 { &amp...

    上一篇博客【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

    展开全文
  • 在上一篇博客【VBA解析JSON数据(4)–JavaScript进阶】中利用JavaScript代码实现读取JSON数据KEY和VALUE的功能,但是还有些繁琐。JavaScript代码读取,然后在VBA去写入,其实JavaScript也是很强大的,完全可以直接...

    在上一篇博客【VBA解析JSON数据(4)–JavaScript进阶】中利用JavaScript代码实现读取JSON数据KEY和VALUE的功能,但是还有些繁琐。JavaScript代码读取,然后在VBA去写入,其实JavaScript也是很强大的,完全可以直接操作Exce单元格写入数据。

    示例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 JSONToRange()
        Dim strJSON As String
        Dim strJSCode As String
        strJSON = [a1]
        strJSCode = "var json,key,col=row=1,d={};for(json in js){col++;for(key in js[json]){if(!d[key]){d[key]=row;ExCell(row++,1)=key;}ExCell(d[key],col)=js[json][key];}}"
        strJSCode = "js=[" & strJSON & "];" & strJSCode
        Range("A3:B3").Value = Array("Name", "Value")
        With CreateObject("ScriptControl")
            .Language = "JScript"
            .AddObject "ExCell", Cells(4, 1)
            .Eval (strJSCode)
        End With
    End Sub
    

    代码解析
    第4行代码读取工作表中的JSON数据。
    第5行和第6行代码为JavaScript代码。

    为了简化代码,VBA代码中使用了JavaScript Minify格式,格式化的JavaScript代码如下:

    var json, key, col = row = 1,
        d = {};
    for (json in js) {
        col++;
        for (key in js[json]) {
            if (!d[key]) {
                d[key] = row;
                ExCell(row++, 1) = key;
            }
            ExCell(d[key], col) = js[json][key];
        }
    }
    

    第8行代码使用后期绑定的方式创建ScriptControl对象,如果使用前期绑定方式,需要在VBE中先引用Microsoft Script Control 1.0
    第9行代码指定ScriptControl对象的语言为JavaScript。
    第10行代码添加名称为ExCell的对象,指向[A4]单元格。
    第11行代码执行JavaScript代码。

    运行示例代码,结果直接写入Excel工作表指定区域,相比上一个示例,代码简洁了许多。
    在这里插入图片描述


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

    展开全文
  • VBA解析JSON数据(4)--JavaScript进阶

    千次阅读 2019-02-20 15:06:18
    在上一篇博客【VBA解析JSON数据(3)–JavaScript】讲VBA无法直接获取Variant/Object/JScriptTypeInfo对象中的Key,这个难题如何解决呢? 解铃还须系铃人,既然是JavaScript的对象,那么自然还是需要在JavaScript中...

    在上一篇博客【VBA解析JSON数据(3)–JavaScript】讲到VBA无法直接获取Variant/Object/JScriptTypeInfo对象中的Key,这个难题如何解决呢?
    解铃还须系铃人,既然是JavaScript的对象,那么自然还是需要在JavaScript中寻求解决方法。
    示例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"
    }
    

    示例代码如下。

    Public Sub JSON_JS_Plus()
        Dim strJSON As String
        Dim objJSON As Object
        Dim arrKeys() As String
        Dim Value As Variant
        Dim j As Integer, k
        Dim strJSCode As String
        Dim objKeys As Object
        Dim intKeyLen As Integer
        With CreateObject("MSScriptControl.ScriptControl")
            .Language = "javascript"
            strJSCode = "function JSGetValue(jsonObj,strKey){return jsonObj[strKey];}"
            strJSCode = strJSCode & " function JSGetKeys(jsonObj){var keys=new Array();for(var key in jsonObj){keys.push(key);}return keys;} "
            .AddCode strJSCode
            strJSON = [a1]
            Set objJSON = .Eval("(" + strJSON + ")")
            Set objKeys = .Run("JSGetKeys", objJSON)
            intKeyLen = .Run("JSGetValue", objKeys, "length")
            ReDim arrKeys(intKeyLen - 1)
            j = 0
            For Each k In objKeys
                arrKeys(j) = k
                j = j + 1
            Next
            Range("A3:B3").Value = Array("Name", "Value")
            j = 4
            For Each k In arrKeys
                Cells(j, 1).Value = k
                Cells(j, 2).Value = .Run("JSGetValue", objJSON, k)
                j = j + 1
            Next
        End With
    End Sub
    

    代码解析
    第10行代码使用后期绑定的方式创建ScriptControl对象,如果使用前期绑定方式,需要在VBE中先引用Microsoft Script Control 1.0
    第11行代码指定ScriptControl对象的语言为JavaScript。
    第12行代码为JS代码过程JSGetValue,用于提取JSON对象中的VALUE。
    第13行代码为JS代码过程JSGetKeys,用于提取JSON对象中的KEY。

    为了简化代码,VBA代码中使用了JavaScript Minify格式,格式化的JavaScript代码如下:

    function JSGetValue(jsonObj, strKey) {
        return jsonObj[strKey];
    }
    
    function JSGetKeys(jsonObj) {
        var keys = new Array();
        for (var key in jsonObj) {
            keys.push(key);
        }
        return keys;
    }
    

    第14行为ScriptControl对象添加代码。
    第16行代码将JSON字符串转换JScriptTypeInfo对象。
    第17行代码调用过程JSGetKeys提取KEY。
    第21行到第23行代码使用循环过程将KEY保存到数组arrKeys中。
    第27行到第28行代码使用循环过程读取KEY对应的VALUE。

    运行示例代码,结果如下。
    在这里插入图片描述
    世上无难事,问题总会能够解决的。


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

    展开全文
  • JavaScript代码可以读取JSON数据KEY和VALUE,JSON数据可以多层嵌套,如何获取JSON数据长度呢? 示例JSON数据如下,数据共用3组。 { "people":[ { "firstName":"Brett", "lastName":"McLaughlin", "email":...

    JSON数据可以多层嵌套,如何获取JSON数据长度呢?其实并不需要遍历全部数据,使用JS代码可以轻松获取数据长度。

    示例JSON数据如下,数据共用3组。

    {
       "people":[
          {
             "firstName":"Brett",
             "lastName":"McLaughlin",
             "email":"brettM@abc.com"
          },
          {
             "firstName":"Jason",
             "lastName":"Hunter",
             "email":"jasonH@nbc.com"
          },
          {
             "firstName":"Elliotte",
             "lastName":"Harold",
             "email":"elharoH@mbc.com"
          }
       ]
    }
    

    示例代码如下。

    Sub JasonArryLength()
        Dim Json As String, JS As Object
        Json = "{ ""people"": " & _
            "[{ ""firstName"": ""Brett"", ""lastName"":""McLaughlin"", ""email"": ""brett@newInstance.com"" }," & _
            "{ ""firstName"": ""Jason"", ""lastName"":""Hunter"", ""email"": ""jason@servlets.com"" }, " & _
            "{ ""firstName"": ""Elliotte"", ""lastName"":""Harold"", ""email"": ""elharo@macfaq.com"" }]}"
        Set JS = CreateObject("ScriptControl")
        JS.Language = "JScript"
        fun = "function getlen(s) { return eval('(' + s + ').people.length'); }"
        JS.AddCode fun
        MsgBox JS.Run("getlen", Json)
        Set JS = Nothing
    End Sub
    

    【代码解析】
    第3行代码为JSON字符串。
    第7行代码创建对象。
    第8行代码指定JS语言。
    第9行代码创建JS代码,其中使用length属性返回数据长度。
    第10行代码添加JS代码。
    第11行代码运行JS代码,结果如下。

    在这里插入图片描述

    展开全文
  • VBA解析JSON数据(6)-- 解析复杂JSON

    千次阅读 2019-08-01 11:01:46
    JSON数据结构中Array和Object可以嵌套,例如下图所示,body是一个Array,其中的元素为Object([0], [1], [2] ... ),对象[0]中即包含普通的键值对`c:"商品"`,也包含Object p(其中包含5个键值对),现在需要提前...
  • VBA解析JSON数据(3)--JavaScript

    千次阅读 2019-02-19 10:57:31
    既然JSON来自于JavaScript,那么用JS想必可以更方便的解析JSON,非常幸运的是VBA中可以使用JS。 示例JSON数据如下所示。 { "applySn": "粤G妆网备字2017050113&...
  • VBA解析JSON数据(1)-- Split函数

    千次阅读 2019-02-16 07:20:48
    什么是JSON? JSON(JavaScript Object Notation) 是一种及其轻量级的...由于JSON天然具备了简洁和清晰的层次结构,易于机器解析和生成,从2005年前后开始JSON成为主流的网络数据传输格式。进行网页数据抓取的时候,...
  • 什么是JSON?JSON(JavaScript Object Notation) 是一种及其轻量级...由于JSON天然具备了简洁和清晰的层次结构,易于机器解析和生成,从2005年前后开始JSON成为主流的网络数据传输格式。进行网页数据抓取的时候,很多...
  • VBA研究】解析JSON数据的几种方法

    万次阅读 2016-12-09 16:31:01
    网抓数据或者通过接口接收数据时,发来的数据很多是JSON格式,这是JavaScript常用的一种数据结构。对这种数据如何解析呢?先假定发来的数据如下,并针对这个数据给出几种解析方法写成的函数: '返回数据json格式)...
  • VBA 发送 GET/POST 请求并解析 json 数据

    万次阅读 2019-04-15 11:14:27
    indexArr = ['a','b', ...] '用于在 json 对象中索引数据的数组 On Error GoTo err_handle '错误处理 For j = 1 To rowCount For k = 1 To colCount Dim kk kk = "json.obj[" + CStr(j - 1) + "]." + indexArr...
  • JSON:JavaScript 对象表示法(JavaScript Object Notation) 和xml相似,都是文本形式(保存在文本文件中或字符串等形式),比如: jsstr = {"系别":"历史系","班级":"一班", "学员":[ {"姓名":"张三",...
  • vba解析json数据如下: ``` Sub VBA_Json() Dim JsonStr As String Dim SC As Object Dim AA, BB JsonStr = "{""desc"":""成功"",""dataa"":{""maxPage"":43522,""ppiUsername"":""谢文泽""}}" ...
  • 这几天在word里面写宏,想解析服务器传过来的json串。但是Set oSC = CreateObjectx86("MSScriptControl.ScriptControl")这个方法一直创建不了对象。 最后再网上看到说,word分为32位的和64位的这个方法只有在32位的...
  • 今天有朋友留言反映,API改版后巨潮资讯...问题分析改版之后巨潮资讯放弃了之前的服务器后台渲染的做法,采用可扩展性更好的JSON作为数据传递的媒介。简单抓包response 返回的JSON字符串如上。抓包的技巧请参考实...
  • 今天有朋友留言反映,API改版后巨潮资讯...问题分析改版之后巨潮资讯放弃了之前的服务器后台渲染的做法,采用可扩展性更好的JSON作为数据传递的媒介。简单抓包response 返回的JSON字符串如上。抓包的技巧请参考实...
  • JSON示例数据文件

    2019-08-13 07:53:52
    JSON数据示例文件,演示如何使用VBA解析复杂JSON数据
  • ADODB.Stream创建UTF-8+BOM编码的...另,使用fso创建的文本文件编码为ANSI,ajax解析json时出现乱码无法正常解析。 Sub ToJson() '创建UTF8文本文件  myrange = Worksheets("sheet1").UsedRang
  • 在做一个json结构的接口数据解析时,发现有两个问题需要解决。其中一个问题是有两个字段名首字母总是会自动变成大写,即: TraceInfo(n, 1) = objJSy.MailNum TraceInfo(n, 11) = objJSy.Operator 其中MailNum和...
  • 在EditText中输入待查询号码,获取号码后在子线程中使用HttpUrlconnection获取JSON数据,之后进行解析;数据获取完成后,在主线程中更新UI,显示获取的号码归属地信息。布局文件android:layout_width="match_parent...
  • 作者:iamlasong 1、接口说明 通过互联网訪问,运单跟踪信息查询接口基于HTTP协议开发,接口为...用户根据约定的接口规范对数据进行解析。 接口调用为HTTP请求的方式,每一次由用户发起的HTTP请求,须要设置验证...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
热门标签
关键字:

vba解析json数据