我有与Excel VBA相同的问题:Parsed JSON Object Loop但无法找到任何解决方案.我的JSON有嵌套对象所以像VBJSON和vba-json这样的建议解决方案对我不起作用.我还修复了其中一个正常工作,但结果是一个调用堆栈溢出,因为doProcess函数的许多递归.
最好的解决方案似乎是原始帖子中看到的jsonDecode函数.它非常快速且高效; 我的对象结构是JScriptTypeInfo类型的通用VBA对象.
此时的问题是我无法确定对象的结构是什么,因此,我事先并不知道将存在于每个通用对象中的键.我需要遍历通用VBA对象来获取键/属性.
如果我的解析javascript函数可以触发VBA函数或sub,那将是非常好的.
是否可以在宏中编写JSON调用脚本?
我想通过API连接获取JSON字符串.看起来问题是Excel期望参数在HTML字符串中传递,但JSON传递HTML主体中的参数.有任何想法吗?
下面的示例...从解析的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) 我试图在Excel 2010中编写一些使用Web服务的VBA代码.我无法在互联网上找到任何相关资源.有人可以告诉我如何做到这一点.
在这里回答我自己的问题.
我已经在Excel VBA中使用JSON做了一些工作,并发布了许多调查结果,我将以问答形式发布这些内容
https://stackoverflow.com/help/self-answer http://blog.stackoverflow.com/2011/07/ITS-OK-到问一答,你自己的问题/
所以在stackoverflow的其他地方,人们可以看到有关在VBA中解析JSON的问题,但他们似乎错过了一两个技巧.
首先,我重新使用自定义JSON解析库,而是使用ScriptControl的Eval方法作为我所有JSON代码的基础.此外,我们还表达了本机Microsoft解决方案的偏好.
这是一个先前的问题在Windows上的Excel VBA中,如何减轻由IDE的大小写行为破坏的解析JSON的点语法遍历问题?这个问题的基础.它显示了使用VBA.CallByName比使用点语法遍历解析的JSON对象更强大.另一个先前的问题在Windows上的Excel VBA中,如何循环解析JSON数组?展示了如何使用它来访问数组元素.但是CallByName返回一个奇怪的变量类型,它在Watch窗口中显示为Object/JScriptTypeInfo,如果在一个窗口中有一个类型Debug.Print(或悬停在变量上),则会得到无信息的"[object Object]".
我们如何改进并获得JSON字符串表示?
以下是您在Debug.Print(?)之后在立即窗口中看到的内容以及将鼠标悬停在变量上的屏幕截图.
这是5系列的问题3.这是完整系列
Q1 在Windows上的Excel VBA中,如何减轻由IDE的大小写行为破坏的解析JSON的点语法遍历问题?
Q2 在Windows上的Excel VBA中,如何循环解析JSON数组?
Q3 在Windows上的Excel VBA中,如何为已解析的JSON变量获取字符串化的JSON表示而不是"[object Object]"?
Q4 在Windows Excel VBA中,如何获取JSON键以抢占"运行时错误'438':对象不支持此属性或方法"?
Q5 在Windows上的Excel VBA中,对于已解析的JSON变量,这个JScriptTypeInfo究竟是什么?
我的客户收到一个包含多个列的电子表格,其中一列是"日期".只有日期被格式化为Date(1292291582263-0700)(似乎是一个JSON日期).
我需要转换并使用此电子表格代码(VBA)中其他地方的MM/DD/YYYY格式的JSON日期.
有谁知道如何解析并将此JSON日期格式转换为MM/DD/YYYY格式?我已经阅读了大量有关Javascript,C#或ASP.NET等的解决方案,但我必须使用的是Excel 2010和此项目的VBA代码.有没有办法达到我需要的可读格式?
在这里回答我自己的问题.
我已经在Excel VBA中使用JSON做了一些工作,并发布了许多调查结果,我将以问答形式发布这些内容
https://stackoverflow.com/help/self-answer http://blog.stackoverflow.com/2011/07/ITS-OK-到问一答,你自己的问题/
所以在stackoverflow的其他地方,人们可以看到有关在VBA中解析JSON的问题,但他们似乎错过了一两个技巧.
首先,我重新使用自定义JSON解析库,而是使用ScriptControl的Eval方法作为我所有JSON代码的基础.此外,我们还表达了本机Microsoft解决方案的偏好.
这是一个先前的问题在Windows上的Excel VBA中,如何减轻由IDE的大小写行为破坏的解析JSON的点语法遍历问题?这个问题的基础.它显示了使用VBA.CallByName比使用点语法遍历解析的JSON对象更强大.另一个先前的问题在Windows上的Excel VBA中,如何循环解析JSON数组?展示了如何使用它来访问数组元素.但是CallByName返回一个奇怪的变量类型,它在Watch窗口中显示为Object/JScriptTypeInfo,如果在一个窗口中有一个类型Debug.Print(或悬停在变量上),则会得到无信息的"[object Object]".在Windows上的Excel VBA系列中的另一个问题中,如何为已解析的JSON变量获取字符串化的JSON表示而不是"[object Object]"?我提出了一些调试"糖",可以很好地检查变量.在第四个问题中在Windows Excel VBA中,如何获取JSON键以抢占"运行时错误'438':对象不支持此属性或方法"?,在研究如何查询成员的JSON对象时,我发现似乎附加到JScriptTypeInfo对象的hasOwnProperty()方法.
所以在这个问题中我问,究竟这个JScriptTypeInfo究竟是什么?
这是5系列的问题5.这是完整系列
Q1 在Windows上的Excel VBA中,如何减轻由IDE的大小写行为破坏的解析JSON的点语法遍历问题?
Q2 在Windows上的Excel VBA中,如何循环解析JSON数组?
Q3 在Windows上的Excel VBA中,如何为已解析的JSON变量获取字符串化的JSON表示而不是"[object Object]"?
Q4 在Windows Excel VBA中,如何获取JSON键以抢占"运行时错误'438':对象不支持此属性或方法"?
Q5 在Windows上的Excel VBA中,对于已解析的JSON变量,这个JScriptTypeInfo究竟是什么?
是否有可以在VB6中使用的现有JSON解析器?
我显然可以编写自己的解析器,但如果我不需要,我不想重新发明轮子.
谢谢!
json ×7
excel ×6
vba ×6
excel-2010 ×2
parsing ×2
api ×1
date ×1
google-docs ×1
object ×1
office-2010 ×1
vb6 ×1
web-services ×1