如何添加嵌套字典&;VBA/Json Ms Access 2016中的集合

如何添加嵌套字典&;VBA/Json Ms Access 2016中的集合,json,vba,dictionary,Json,Vba,Dictionary,我们公司要求以Json格式将发票详细信息发送给我们的税务顾问进行评估,这意味着生成的每张发票都必须通过税务顾问进行验证。如果发票生成不正确,税务顾问将其作为拒绝发票发回。这里的问题是,在导出Ms access 2016发票数据后,我们无法获得正确的Json格式 我在下面有一段代码,它几乎完成了将Ms Access数据导出为正确的Json格式的工作,但我有以下两件事要做: 当前Json格式: { "PosSerialNumber":"", "IssueTime":"", "TransactionT

我们公司要求以Json格式将发票详细信息发送给我们的税务顾问进行评估,这意味着生成的每张发票都必须通过税务顾问进行验证。如果发票生成不正确,税务顾问将其作为拒绝发票发回。这里的问题是,在导出Ms access 2016发票数据后,我们无法获得正确的Json格式

我在下面有一段代码,它几乎完成了将Ms Access数据导出为正确的Json格式的工作,但我有以下两件事要做: 当前Json格式:

{
"PosSerialNumber":"",
"IssueTime":"",
"TransactionType":0,
"PaymentMode":0,
"SaleType":0,
"Items":{
"ItemId":1,
"Description":"Apple"
"Barcode":"458630036",
"Quantity":8,
"UnitPrice":2,
"Discount":0,
"Taxable":[
"A",
"T"
]
}
}
Option Compare Database
Option Explicit
Private Sub Command0_Click()
Dim foo As New Dictionary
Set foo = New Dictionary
Dim Noor As Dictionary
Set Noor = New Dictionary
Dim hoo As New Collection
Dim goo As New Dictionary
Set goo = New Dictionary
Dim Zoo As New Dictionary
Set Zoo = New Dictionary
Dim Koo As New Collection
Dim json As String
    With foo
        .Add "PosSerialNumber", Me.txtchris
        .Add "IssueTime", Me.txtAddress
        .Add "TransactionTyp", 0
        .Add "PaymentMode", 0
        .Add "SaleType", 0
        .Add "Items", Noor
     Noor.Add "ItemID", 1
     Noor.Add "Description", "Apple"
     Noor.Add "BarCode", "4589630036"
     Noor.Add "Quantity", 8
     Noor.Add "UnitPrice", 2
     Noor.Add "Discount", 0
     Noor.Add "Taxable", hoo
     hoo.Add "A"
     hoo.Add "T"

    End With

    Dim member As Variant
    For Each member In foo

    Next
MsgBox JsonConverter.ConvertToJson(foo, Whitespace:=3), vbOKOnly, "Audited by C H"
以下是两件事: (1) 正如您看到的,它在“Items”上缺少一个方括号:{,正确的应该是“Items”:[{以及结束语] (2) 我还想添加(“Total”,120,“IstaxInclusive”:true),以便最终代码如下所示:

下面是我们正在使用的当前MS Access VBA代码,以尝试实现所需的目标

用于生成上述Json格式的VBA代码:

{
"PosSerialNumber":"",
"IssueTime":"",
"TransactionType":0,
"PaymentMode":0,
"SaleType":0,
"Items":{
"ItemId":1,
"Description":"Apple"
"Barcode":"458630036",
"Quantity":8,
"UnitPrice":2,
"Discount":0,
"Taxable":[
"A",
"T"
]
}
}
Option Compare Database
Option Explicit
Private Sub Command0_Click()
Dim foo As New Dictionary
Set foo = New Dictionary
Dim Noor As Dictionary
Set Noor = New Dictionary
Dim hoo As New Collection
Dim goo As New Dictionary
Set goo = New Dictionary
Dim Zoo As New Dictionary
Set Zoo = New Dictionary
Dim Koo As New Collection
Dim json As String
    With foo
        .Add "PosSerialNumber", Me.txtchris
        .Add "IssueTime", Me.txtAddress
        .Add "TransactionTyp", 0
        .Add "PaymentMode", 0
        .Add "SaleType", 0
        .Add "Items", Noor
     Noor.Add "ItemID", 1
     Noor.Add "Description", "Apple"
     Noor.Add "BarCode", "4589630036"
     Noor.Add "Quantity", 8
     Noor.Add "UnitPrice", 2
     Noor.Add "Discount", 0
     Noor.Add "Taxable", hoo
     hoo.Add "A"
     hoo.Add "T"

    End With

    Dim member As Variant
    For Each member In foo

    Next
MsgBox JsonConverter.ConvertToJson(foo, Whitespace:=3), vbOKOnly, "Audited by C H"
端接头

所需格式:

{
"PosSerialNumber":"",
"IssueTime":"",
"TransactionType":0,
"PaymentMode":0,
"SaleType":0,
"Items":[{
"ItemId":1,
"Description":"Apple"
"Barcode":"458630036",
"Quantity":8,
"UnitPrice":2,
"Discount":0,
"Taxable":[
"A",
"T"
]
"Total":120,
"IsTaxInclusive":true,
"SP":0
}
]
}

JSON中的方括号表示数组。
JsonConverter
将集合或数组包装在
[]
中。 您可以将
Noor
包装到
Array()
中,也可以将其添加到集合中 排列

收藏