Hi
I have an issue in nested Json from MSSQL datatable.
I am using normal Json (not nested ). It works fine.
But nested, I could not do.
WayBillNo is Final outcome.
Pls Advice me
thank you
Maideen
Here is my code
What I have tried:
Json Should be like
{ "Shipment": [
{
"ShipmentServiceType": "Standard Delivery",
"SenderName": "ABC",
"RecipientName": "XYZ",
"ShipmentAddressFrom": {
"CompanyName": "ABC ENTERPRISE",
"UnitNumber": "6, ",
"Address": "Jalan TP2, "
},
"ShipmentAddressTo": {
"CompanyName": "XYZ Enterprise",
"UnitNumber": "10, ",
"Address": "Jalan TP5, "
},
"InsurancePurchase" : [
{
"ProductDescription":"The description of the item .",
"Quantity": 1,
"UnitPrice": 110
}],
"WayBill": [
{
"WayBillNo": ""
},
],
"DONumber": ""
}
] }
Public Class Shipment
Public Property SenderName As String
Public Property ShipmentServiceType As String
Public Property RecipientName As String
Public Property ShipmentAddressFrom As List(Of ShipmentAddressFrom)
Public Property ShipmentAddressTo As List(Of ShipmentAddressTo)
Public Property InsurancePurchase As List(Of InsurancePurchase)
Public Property WayBill As List(Of WayBill)
End Class
Public Class ShipmentAddressFrom
Public Property CompanyName As String
Public Property UnitNumber As String
Public Property Address As String
End Class
Public Class ShipmentAddressTo
Public Property CompanyName As String
Public Property UnitNumber As String
Public Property Address As String
End Class
Public Class InsurancePurchase
Public Property ProductDescription As String
Public Property UnitPrice As String
End Class
Public Class WayBill
Public Property WayBillNo As String
End Class
Private Sub LoadLineClearData()
Dim Shipments As List(Of Shipment) = New List(Of Shipment)()
Dim dt As DataTable = GetData("select * from LineClear_Data")
For i As Integer = 0 To dt.Rows.Count - 1
Dim Shipment As Shipment = New Shipment With
{.ShipmentServiceType = Convert.ToString(dt.Rows(i)("ShipmentServiceType")),
.SenderName = Convert.ToString(dt.Rows(i)("SenderName")),
.RecipientName = Convert.ToString(dt.Rows(i)("RecipientName")),
.ShipmentAddressFrom = ShipmentAddressFrom(Convert.ToString(dt.Rows(i)("SenderName")),
.ShipmentAddressTo = ShipmentAddressTo(Convert.ToString(dt.Rows(i)("SenderName")),
.InsurancePurchase = InsurancePurchase(Convert.ToString(dt.Rows(i)("SenderName")),
.WayBill = WayBill(Convert.ToString(dt.Rows(i)("SenderName"))}
Shipments.Add(Shipment)
Next
Dim json = New JavaScriptSerializer().Serialize(Shipments)
Me.txtJson.Text = json
End Sub
Public Function ShipmentAddressFrom(ByVal customerId As String) As List(Of ShipmentAddressFrom)
Dim ShipmentAddressFroms As List(Of ShipmentAddressFrom) = New List(Of ShipmentAddressFrom)()
Dim dt As DataTable = GetData(String.Format("SELECT * FROM LineClear_Data Where SenderName ='{0}'", customerId))
For i As Integer = 0 To dt.Rows.Count - 1
ShipmentAddressFroms.Add(New ShipmentAddressFrom With
{.CompanyName = Convert.ToString(dt.Rows(i)("From_CompanyName")),
.UnitNumber = Convert.ToString(dt.Rows(i)("From_UnitNumber")),
.Address = Convert.ToString(dt.Rows(i)("From_Address"))})
Next
Return ShipmentAddressFroms
End Function
Public Function ShipmentAddressTo(ByVal customerId As String) As List(Of ShipmentAddressTo)
Dim ShipmentAddressTos As List(Of ShipmentAddressTo) = New List(Of ShipmentAddressTo)()
Dim dt As DataTable = GetData(String.Format("SELECT * FROM LineClear_Data Where SenderName ='{0}'", customerId))
For i As Integer = 0 To dt.Rows.Count - 1
ShipmentAddressTos.Add(New ShipmentAddressTo With
{.CompanyName = Convert.ToString(dt.Rows(i)("To_CompanyName")),
.UnitNumber = Convert.ToString(dt.Rows(i)("To_UnitNumber")),
.Address = Convert.ToString(dt.Rows(i)("To_Address"))})
Next
Return ShipmentAddressTos
End Function
//** WayBillNo is Final outcome.
Public Function WayBill(ByVal customerId As String) As List(Of WayBill)
Dim WayBills As List(Of WayBill) = New List(Of WayBill)()
Dim dt As DataTable = GetData(String.Format("SELECT * FROM LineClear_Data Where SenderName ='{0}'", customerId))
For i As Integer = 0 To dt.Rows.Count - 1
WayBills.Add(New WayBill With
{.WayBillNo = Convert.ToString(dt.Rows(i)("WB1_WayBillNo"))})
Next
Return WayBills
End Function
Public Function InsurancePurchase(ByVal customerId As String) As List(Of InsurancePurchase)
Dim InsurancePurchases As List(Of InsurancePurchase) = New List(Of InsurancePurchase)()
Dim dt As DataTable = GetData(String.Format("SELECT * FROM LineClear_Data Where SenderName ='{0}'", customerId))
For i As Integer = 0 To dt.Rows.Count - 1
InsurancePurchases.Add(New InsurancePurchase With
{.ProductDescription = Convert.ToString(dt.Rows(i)("IP1_ProductDescription")),
.UnitPrice = Convert.ToDecimal(dt.Rows(i)("IP1_UnitPrice"))})
Next
Return InsurancePurchases
End Function