修改VBA JSON文件

时间:2018-06-06 17:42:12

标签: json vba excel-vba vbscript excel

我想使用vba修改excel中的JSON文件。

所以我有这个JSON文件

{
    "root": [{
        "STATUS_RESPONSE": {
            "STATUS": {
                "STATUS": {
                    "OWNER": "root",
                }
            },
            "REQ_ID": "00000",
            "RESULT": [{
                "USER": {
                    "BUSINESS_ID": "A",
                    "USER_NUMBER": "45",
                    "LANGUAGE": "F",
                }
            },
            {
                "USER_SESSION": {
                    "USER_ID": "0000001009",
                    "HELP_URL": "http://google.com",
                }
            },
            {
                "USER_ACCESS": {
                    "SERVICES_ROLE": "true",
                    "JOURNALLING": "true",

                }
            }]
        }
    }]
}

我想只修改“BUSINESS_ID”

然后我可以使用此

导出到相同的JSON文件
   Private Sub CommandButton2_Click()
Dim rng As Range, items As New Collection, myitem As New Dictionary, i As Integer, cell As Variant, myfile As String
Dim FSO As New FileSystemObject
Dim buss As String
Dim JsonTS As TextStream
Set rng = Range("A2")
Set JsonTS = FSO.OpenTextFile("test.json", ForReading)
JsonText = JsonTS.ReadAll
JsonTS.Close
Set JSON = ParseJson(JsonText)
JSON("root")(1)("STATUS_RESPONSE")("RESULT")(1)("USER")("BUSINESS_ID") = Sheets(1).Cells(2, 1).Value
buss = JSON("root")(1)("STATUS_RESPONSE")("RESULT")(1)("USER")("BUSINESS_ID")
myfile = "test.json"
Open myfile For Output As #1
Write #1, buss
Close #1
End Sub

我可以编辑单元格,这将替换JSON文件,但它会从上面的JSON文件中删除整个结构。

如果我将业务ID更改为C:

,我会在json文件中得到类似的内容
"C"

有没有办法可以在现有文件中修改我需要的东西而不会消除其他所有内容

1 个答案:

答案 0 :(得分:1)

您应该导出整个JSON对象,而不仅仅是其中的一部分。

Write #1, JsonConverter.ConvertToJson(JSON, Whitespace:=2)