VB.NET JSON Serialization & Deserialization + DataGridView

 
VB.NET JSON Serialization & Deserialization + DataGridView
 
記得係 project 上增加 Reference -> System.Runtime.Serialization 及 System.ServiceModel.Web
 

 
   Imports System
   Imports System.Runtime.Serialization.Json
   Imports System.IO
 
   Private Sub JSON_Ser_DeSer()
 
      Dim p1 As New List(Of Staff)
      p1.Add(New Staff("Ma", "Programmer", "29"))
      p1.Add(New Staff("Ma", "Programmer", "30"))
      p1.Add(New Staff("Ma", "Programmer", "31"))
      p1.Add(New Staff("Ma", "Programmer", "32"))
      p1.Add(New Staff("Ma", "Programmer", "33"))
      p1.Add(New Staff("Ma", "Programmer", "34"))
      p1.Add(New Staff("Ma", "Programmer", "35"))
      p1.Add(New Staff("Ma", "Programmer", "36"))
 
      Dim Stream1 As New MemoryStream()
      Dim ss1 As New DataContractJsonSerializer(GetType(List(Of Staff)))
 
      ss1.WriteObject(Stream1, p1)
 
      Stream1.Position = 0
      Dim sr As New StreamReader(Stream1)
      Label1.Text = "Serization : " & sr.ReadToEnd()
 
      Stream1.Position = 0
      Dim d1 As New List(Of Staff)
      d1 = TryCast(ss1.ReadObject(Stream1), List(Of Staff))
 
      DataGridView1.DataSource = InsertDataTable(d1)
 
   End Sub
 
   Private Function InsertDataTable(ByVal A As List(Of Staff)) As DataTable
 
      Dim AA As New DataTable
 
      AA.Columns.Add("Name")
      AA.Columns.Add("Position")
      AA.Columns.Add("Age")
 
      For i As Integer = 0 To A.Count – 1
         AA.Rows.Add()
         AA.Rows(i).Item("Name") = A(i).Name
         AA.Rows(i).Item("Position") = A(i).Position
         AA.Rows(i).Item("Age") = A(i).Age
      Next
 
      Return AA
   End Function
 
   <SerializableAttribute()> Private Class Staff
 
      Public Name As String
      Public Position As String
      Public Age As String
 
      Sub New(ByVal A As String, ByVal B As String, ByVal C As String)
         Name = A
         Position = B
         Age = C
      End Sub
 
   End Class