高度嵌套的 JSON 到 Datagridview1 Vb.net


{
"gstin":null,
"fp":null,
"version":null,
"hash":null,
"b2b":[{
"ctin":"2sdasdsadaU",
"inv":[{
"chksum":"2fdad1538fe0fde4f03124893cced43453dcdddbf73f0bd4b6103b60c66b76cc",
"inum":"316",
"idt":"2019-10-18T00:00:00",
"val":62235.0,
"pos":"24",
"rchrg":"N",
"inv_typ":"R",
"itms":[{
"num":1,
"itm_det":{
"rt":5.0,
"txval":59271.75,
"camt":1481.79,
"samt":1481.79,
"csamt":0.0
},
"itc":null
}]
}]
},
{
"ctin":"24sdasdadZU",
"inv":[{
"chksum":"2fdad1538fe0fde4f03124893cced43453dcdddbf73f0bd4b6103b60c66b76cc",
"inum":"316",
"idt":"2019-10-18T00:00:00",
"val":62235.0,
"pos":"24",
"rchrg":"N",
"inv_typ":"R",
"itms":[{
"num":1,
"itm_det":{
"rt":5.0,
"txval":59271.75,
"camt":1481.79,
"samt":1481.79,
"csamt":0.0
},
"itc":null
}]
}]
}]}

这是我试图在数据网格视图中获取的 Json 格式

它高度嵌套,我无法使用牛顿软件在数据网格视图中查看它。

我能够将其作为List的对象,但是将该对象用作数据源不会引发错误 或任何东西

请帮助我任何人

之前创建的类

Public Class B2b
Public Property ctin As String
Public Property inv As List(Of Inv)
End Class
Public Class RootObject
Public Property gstin As Object
Public Property fp As Object
Public Property version As Object
Public Property hash As Object
Public Property b2b As List(Of B2b)
End Class ...

用于 Vb.net 的列表到数据表转换器

Imports System
Imports System.Text
Imports System.IO
Imports System.Configuration
Imports System.Data
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Reflection
Public Class CreateDataTable
Public Shared Function ToDataTable(Of T)(ByVal list As IList(Of T)) As DataTable
Dim table As New DataTable()
Dim fields() As FieldInfo = GetType(T).GetFields()
For Each field As FieldInfo In fields
table.Columns.Add(field.Name, field.FieldType)
Next
For Each item As T In list
Dim row As DataRow = table.NewRow()
For Each field As FieldInfo In fields
row(field.Name) = field.GetValue(item)
Next
table.Rows.Add(row)
Next
Return table
End Function
End Class

然后是将 json 解体到数据表的函数

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports Newtonsoft.Json
Imports System.Text
Imports System.Configuration
Imports System.Data
Imports System.Reflection
Private Function Deserilize(ByVal json As String)
Dim settings = New JsonSerializerSettings With {.NullValueHandling = NullValueHandling.Ignore,
.MissingMemberHandling = MissingMemberHandling.Ignore}
Dim data = JsonConvert.DeserializeObject(Of RootObject)(json, settings)
Dim cl As CreateDataTable = New CreateDataTable()
Dim dt As DataTable = New DataTable()
Dim show As b2bdet = New b2bdet()
Dim showInfo As List(Of b2bdet) = New List(Of b2bdet)()
For Each value In data.b2b
For Each inv In value.inv
For Each invnum In inv.itms
showInfo.Add(New b2bdet With {
.CTIN = value.ctin,
.inum = inv.inum,
.idt = inv.idt,
.val = inv.val,
.pos = inv.pos,
.rchrg = inv.rchrg,
.inv_typ = inv.inv_typ,
.num = invnum.num,
.rt = invnum.itm_det.rt,
.taxval = invnum.itm_det.txval,
.camt = invnum.itm_det.camt,
.samt = invnum.itm_det.samt,
.csamt = invnum.itm_det.csamt})
Next
Next
Next
dt = cl.ToDataTable(showInfo)
DataGridView1.DataSource = dt
End Function

因此我解决了问题

最新更新