Изменение файла VBA JSON - PullRequest
0 голосов
/ 06 июня 2018

Я хочу изменить файл JSON в Excel с помощью vba.

Итак, у меня есть этот файл 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 выше.

Я получаю нечто похожее на это, как в файле json, если я изменяю бизнес-идентификатор на C:

"C"

Есть ли способ, которым я могу просто изменить то, что мне нужно всуществующий файл без исчезновения всего остального

1 Ответ

0 голосов
/ 06 июня 2018

Вы должны экспортировать весь объект JSON, а не только его часть.

Write #1, JsonConverter.ConvertToJson(JSON, Whitespace:=2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...