Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA JsonConverter添加附加引号_Json_Excel_Vba - Fatal编程技术网

VBA JsonConverter添加附加引号

VBA JsonConverter添加附加引号,json,excel,vba,Json,Excel,Vba,我目前正在尝试使用找到的VBA模块加载项解析JSON。我目前在本地将JSON文件存储为文本文档,因此我将它们调用到VBA中,进行必要的更改,然后将它们发送回新文件。出于我无法理解的原因,代码似乎在开始和结束处添加引号(因为它是一个字符串),并且还向每个键/值对添加引号。后者是我正在尝试做的事情(这些都是大型Json文件)的一个障碍。我目前的解决方案是将它们打印到一个单元格中,然后将JSON重新复制/粘贴到一个文本文件中,即使这样也不是很简单。有没有比我所尝试的更好的解决方案 Dim Json A

我目前正在尝试使用找到的VBA模块加载项解析JSON。我目前在本地将JSON文件存储为文本文档,因此我将它们调用到VBA中,进行必要的更改,然后将它们发送回新文件。出于我无法理解的原因,代码似乎在开始和结束处添加引号(因为它是一个字符串),并且还向每个键/值对添加引号。后者是我正在尝试做的事情(这些都是大型Json文件)的一个障碍。我目前的解决方案是将它们打印到一个单元格中,然后将JSON重新复制/粘贴到一个文本文件中,即使这样也不是很简单。有没有比我所尝试的更好的解决方案

Dim Json As Object

FilePath = "Path to file.txt"
Open FilePath For Input As #1
    Data = Input$(LOF(1), #1)
Close #1
Set Json = JsonConverter.ParseJson(Data)
Json("key 1")("key 2") = "value"

outputfile ="path to file.txt"
    Write #1, JsonConverter.ConvertToJson(Json, Whitespace:=2)
Close #1
Open outputfile For Input As #1
    NewData = Input$(LOF(1), #1)
Close #1
NewData = Replace(NewData, """", "!")  
NewData = Replace(NewData, "!!", """") 
NewData = Replace(NewData, "!", "")   
m1.Cells(x,y) = NewData
因此,如果您查看输入JSON与输出文件JSON,则键被成功编辑,但看起来是这样的

input file
{"key1":{"key2":"Blank"}} 

outputfile
"{""key1"":{""key2"":""value""}}"
在这里发布的文件太大了,因此从键和值中删除额外的引号,外部是一个负担,excel的替换函数似乎不适合这样做

就像我说的,以NewData开头的3行代码处理这个问题,然后第4行将整个内容粘贴到一个单元格中,然后我将其粘贴回一个文本文件中。这是我想出的删除这两种不需要的引号的最有效的方法

与Print函数不同,Write函数在 在字符串写入到 文件