VBA:将 JSON 打印到文本文件包括双引号

Sco*_*man 1 string excel vba json

以下代码

Dim theJSON As String
theJSON = "{""docType"":""DRAFT"",""riskState"":""NY""}"

theFileName = "C:\test.json"

Open theFileName For Output As #1
Write #1, theJSON 'jsonSerialization
Close #1
Run Code Online (Sandbox Code Playgroud)

产生这样的输出:

"{""docType"":""DRAFT"",""riskState"":""NY""}"

我无法弄清楚如何阻止 VBA 字符串语法打印到文件中(转义引号和前导/尾随引号)。

有任何想法吗?

Com*_*ern 5

VBA 有两组不同的文本文件处理函数:

Write #并且Input #旨在与“结构化”文件 (.csv) 一起使用,并使用文本限定数据 - 任何StringVariant具有字符串子类型的双引号都转义为"",并且整个内容都用引号括起来。

Print #并且Input(number, #filenumber)旨在与“非结构化”文件一起使用。

解决方案是使用Print而不是Write

Dim theJSON As String
theJSON = "{""docType"":""DRAFT"",""riskState"":""NY""}"

theFileName = "C:\test.json"

Dim handle As Integer
handle = FreeFile
Open theFileName For Output As #handle
Print #handle, theJSON 'jsonSerialization
Close #handle
Run Code Online (Sandbox Code Playgroud)

请注意,您应该始终使用该FreeFile函数返回一个打开的文件句柄,而不是对数字进行硬编码 - 这避免了句柄冲突和意外文件访问的可能性。