我在MS ACCESS中有一个VBA脚本,它正在获取网页的JSON输出。检索后,我使用VBA-JSON处理数据并将其插入Access数据库。它工作得很漂亮。
这是我检索JSON内容的代码:
With CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "GET", URL, False
.setRequestHeader "Content-Type", "text/html"
.send
htm.body.innerHTML = .responseText
' Debug.Print .ResponseStream
End With
我遇到了一点障碍,我无法找到解决办法:
在JSON的值中,双引号已编码为"
,以便不破坏JSON。问题是,当我检索页面的JSON内容时,它被编码为"
,这使得JSON无效。
如何判断它在检索时不对这些HTML值进行编码,或者只是为了逃避这些值,这样就不会破坏我的代码?我猜测可能有另一个我可以使用的课程没有这个问题,但经过几个小时的搜索,我很难过。
答案 0 :(得分:0)
JSON是一种完全独立于语言但使用约定的文本格式。值可以是双引号中的字符串,也可以是数字,或者是true或false或null。可以在http://www.json.org/找到JSON的定义。
JSON喜欢双引号(作为字符串分隔符)。
"
是HTML'编码'因为HTML不喜欢双引号,而不是JSON。如果双引号包含在JSON字段中,则它采用HTML表单"
以避免混淆。
因此,在代码中将变量定义为字符串Dim a$
并设置a$ = .responseText
,并将所有"
替换为单引号,即CHR$(39)
a$ = Replace (a$, """, CHR$(39))
之后
htm.body.innerHTML = a$
你将拥有一个JSON友好的文本文件。
有趣的说明:
在我的回答中,我必须编写"
作为代码,编辑器会自动将此字符串更改为双引号(以HTML格式呈现!)