代码之家  ›  专栏  ›  技术社区  ›  Kevin Jones

修改vba json文件

  •  0
  • Kevin Jones  · 技术社区  · 6 年前

    我想用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",
    
                    }
                }]
            }
        }]
    }
    

    我只想修改“业务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文件中去掉了整个结构。

    如果将business id更改为c,我会在json文件中得到类似的结果:

    "C"
    

    有没有一种方法可以让我只修改现有文件中需要的东西而不让其他东西消失

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tim Williams    6 年前

    你应该把整个 JSON 对象,而不仅仅是其中的一部分。

    Write #1, JsonConverter.ConvertToJson(JSON, Whitespace:=2)
    
    推荐文章