是否有内置的方法在Excel VBA中对字符串进行URL编码,还是需要手动滚动此功能?
我试图在VB6中使用Web服务.我控制的服务 - 当前可以返回SOAP/XML消息或JSON.我有一个非常困难的时候,如果VB6的SOAP类型(第1版)找出可以处理返回object-而不是简单的类型,如string,int等.到目前为止,我想不出什么,我需要做的就是VB6而归玩对象.
所以我想我可能会将Web服务中的响应序列化为JSON字符串.VB6是否存在JSON解析器?
下面的示例...从解析的JSON字符串循环对象返回错误"对象不支持此属性或方法".任何人都可以建议如何使这项工作?非常感谢(我在这里问了6个小时寻找答案).
用于将JSON字符串解析为对象的函数(这可以正常工作).
Function jsonDecode(jsonString As Variant)
Set sc = CreateObject("ScriptControl"): sc.Language = "JScript"
Set jsonDecode = sc.Eval("(" + jsonString + ")")
End Function
Run Code Online (Sandbox Code Playgroud)
循环解析对象将返回错误"对象不支持此属性或方法".
Sub TestJsonParsing()
Dim arr As Object 'Parse the json array into here
Dim jsonString As String
'This works fine
jsonString = "{'key1':'value1','key2':'value2'}"
Set arr = jsonDecode(jsonString)
MsgBox arr.key1 'Works (as long as I know the key name)
'But this loop doesn't work - what am I doing wrong?
For Each keyName In arr.keys 'Excel errors out …Run Code Online (Sandbox Code Playgroud) 我有一个像下面这样的json:
{"sentences":[{"trans":"something ru","orig":"english word","translit":"Angliyskoye slovo","src_translit":""}], "src":"en","server_time":69}
Run Code Online (Sandbox Code Playgroud)
并解析它:
Function jsonDecode(jsonString As Variant)
Set sc = CreateObject("ScriptControl"): sc.Language = "JScript"
Set jsonDecode = sc.Eval("(" + jsonString + ")")
End Function
Set arr = jsonDecode(txt)
Run Code Online (Sandbox Code Playgroud)
结果 arr包含如下所示的值(在Watches中检查):
arr
- sentences (type: Variant/Object/JScriptTypeInfo)
- 0 (type: Variant/Object/JScriptTypeInfo)
- orig (type: Variant/String)
- trans (type: Variant/String)
...
- Item 1 (type: Variant/Object/JScriptTypeInfo)
- orig (type: Variant/String)
- trans (type: Variant/String)
...
- server_time
- src
Run Code Online (Sandbox Code Playgroud)
arr.src运作良好,但我怎么能得到arr.sentences(0).trans?首先,VBA替换sentences用Sentences,其次(当我试图手动更改JSON)它仍然不允许使用sentenses(0) …
测试相同自定义对象类型的两个变量是否引用同一对象的运算符或函数是什么?我试过了
If myObject = yourObject Then
Run Code Online (Sandbox Code Playgroud)
但是获取运行时错误438对象不支持此属性或方法.我猜这是告诉我覆盖'='运算符来测试两个对象的所有字段是否具有相同的值.但我想要的是测试它们是否是同一个对象.
我已经看过如何使用VBA从Excel向服务器发送HTTP POST请求?
以及 描述如何使用QueryTables从HTTP端点检索数据的MacOS友好响应.它演示了如何检索单个字符串并将其填充到单元格中.
都好.现在我想检索多个值.它是一个很大的JSON字符串,我想在填充一个或多个单元格之前在Excel VBA中对其进行后处理.
这怎么可能?
我可以想到一种方法 - 将QueryTables的结果放入隐藏的单元格中,然后对隐藏的单元格进行后处理以填充其他单元格.我还没有评估过几个VBA的JSON库.
但这看起来很糟糕.真的,我不想依赖于将JSON存储为单元格中的值.我想将它只存储在我的VBA代码中的变量中.就像我在使用CreateObject("MSXML2.ServerXMLHTTP")一样.(注意:在MacOS上的Excel中无法使用CreateObject()).
我理解这里最好的答案可能是: 如果要在Excel中运行应用程序,请获取Windows计算机.
我的公司有一个供应商提供JSON数据源,我需要每两个小时加载到我们的MS Access数据库中.我需要:
我遇到了这个问题,讨论了类似的问题,但是没有很好的描述如何在MS Access中实现它.任何帮助感激不尽!
我有以下json数组,您可以在下面的URL轻松访问:
https://crowdfluttr.firebaseio.com/test/array.json
它具有以下输出:
{"-0p":{"date":"2015-01-01","string":"apple","value":1},"-1p":{"date":"2015-02-04","string":"banana","value":50},"-2p":{"date":"2015-02-03","string":"carrot","value":99},"-3p":{"date":"2015-02-02","string":"banana","value":20},"-4p":{"date":"2015-03-01","string":"banana","value":11},"-5p":{"date":"2015-04-01","string":"kiwi","value":23},"-6p":{"date":"2015-05-01","strawberry":"banana","value":10}}
Run Code Online (Sandbox Code Playgroud)
我想从此URL中提取此json数据,然后解析它以推送到Microsoft Access。
我找到了说明如何解析JSON的资源(解析JSON,在Excel VBA中解析JSON),但没有从URL中提取它然后进行解析