分割JSON文件的特定部分并将其导出

时间:2018-10-14 16:29:20

标签: json excel vba

我有JSON文件,这是其结构的预览 enter image description here

有没有办法切断“ allTests”部分并将其导出到新的JSON文件?

2 个答案:

答案 0 :(得分:2)

尝试以下方法。保留特殊字符。希望相关的JSON被 cut 删除。

Option Explicit
Public Sub GetJSONExtract()
    Dim fso As Object, jsonFile As Object, jsonText As String, arr() As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set jsonFile = fso.OpenTextFile("C:\Users\User\Desktop\Sample.json")
    jsonText = jsonFile.ReadAll
    arr = Split(jsonText, Chr$(34) & "allTests" & Chr$(34))
    jsonText = Replace$(arr(2), ":", vbNullString, 1, 1)
    jsonText = Split(jsonText, Chr$(34) & "time" & Chr$(34))(0)
    jsonText = Left$(jsonText, InStrRev(jsonText, ",") - 1)
    With fso.CreateTextFile("C:\Users\User\Desktop\Test.json")
        .write jsonText
    End With
End Sub

答案 1 :(得分:2)

使用:https://github.com/VBA-tools/VBA-JSON

rnorm

编辑:这似乎是一个问题-

enter image description here

在allTests下,每个项目都是一个具有单个属性/键的对象(该属性/键非常大,并且包含由Sub ParseItOut() Const f_PATH As String = "C:\Users\Tim\Desktop\" Dim fso, j, obj, subObj Set fso = CreateObject("scripting.filesystemobject") j = fso.OpenTextFile(f_PATH & "sample.json").ReadAll() Set obj = JsonConverter.ParseJson(j) 'get the required section Set subObj = obj("results")(1)("allTests") 'write to file as JSON fso.CreateTextFile(f_PATH & "sample_mod.json").Write JsonConverter.ConvertToJson(subObj) End Sub 转义的嵌入引号)和值为\

我使用的库似乎对此有问题(或者我不知道如何正确使用它...)