|  | 
 
|  
 สำหรับโค้ดในวันนี้แอดมินจะทำการจำลองเหตุการณ์ว่า เราสามารถนำข้อมูลมาจากฐานข้อมูลใดๆก็ได้ เช่น MS Access, MSSQL หรือ MySQL มาใส่ไว้ใน DataTable จากนั้นทำการแปลงข้อมูล (Serialize) เหล่านี้ให้อยู่ในรูปแบบของ JSON (JavaScript Object Notation) ซึ่งมันก็เป็นรูปแบบ Text File ธรรมดานี่แหละ คล้ายๆกับ XML (Extensible Markup Language) เพียงแต่มีการจัดรูปแบบที่แตกต่างกันออกไป จากนั้นทำการแยกแยะข้อมูล JSON เข้ามาแสดงผลไว้ใน DataGridView นอกจากนี้แอดมินยังได้นำเสนอ การเลือกเอาเฉพาะบางฟิลด์มาแสดงผลลงใน ListView ส่วน TextBox จะแสดงรูปแบบข้อมูลของ JSON
 
 Add Reference ... NewtonSoft.Json.Net20 จะอยู่ในโฟลเดอร์ Package และต้อง Add System.Web.Extensions ที่อยู่ใน .Net Framework ด้วย
 
  
 มาดูโค้ดต้นฉบับกันเถอะ
 
 คัดลอกไปที่คลิปบอร์ดImports Newtonsoft.Json
Imports System.IO
Imports System.Net
'// Add a reference to System.Web.Extensions & .Net Framework 4.0
Public Class frmJsonSample
    Private Sub frmJson_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim dt As New DataTable
        '// Create DataTable
        dt = CreateDataTable()
        '// Convert DataTable to JSON Format
        Dim _json As String = GetJson(dt)
        '// Sample JSON.
        '// {"ID":"1","Name":"Sample-001"}
        txtJson.Text = _json
        Try
            '// Parsing JSON Data and display in DataGridView.
            dgvData.DataSource = DeserializeDataTable(_json)
            '// Show only Name in ListBox.
            GetNames(_json)
        Catch ex As WebException
            MessageBox.Show("Error: " & ex.ToString())
        End Try
    End Sub
    Private Function CreateDataTable() As DataTable
        Dim dt As New DataTable
        dt.Columns.Add("ID", GetType(Integer))
        dt.Columns.Add("Name", GetType(String))
        For i As Integer = 1 To 10
            dt.Rows.Add()
            dt.Rows(i - 1)(0) = i
            dt.Rows(i - 1)(1) = "Sample-" & Microsoft.VisualBasic.Right("000" & i, 3)
        Next
        Return dt
    End Function
    '// DataTable to JSON.
    Private Function GetJson(ByVal dt As DataTable) As String
        '// References ... System.Web.Extensions
        Dim Jserializer As New System.Web.Script.Serialization.JavaScriptSerializer()
        Dim rowsList As New List(Of Dictionary(Of String, Object))()
        Dim row As Dictionary(Of String, Object)
        For Each dr As DataRow In dt.Rows
            row = New Dictionary(Of String, Object)()
            For Each col As DataColumn In dt.Columns
                row.Add(col.ColumnName, dr(col))
            Next
            rowsList.Add(row)
        Next
        Return Jserializer.Serialize(rowsList)
    End Function
    Public Function DeserializeDataTable(json As String) As DataTable
        Dim dt As DataTable
        dt = TryCast(JsonConvert.DeserializeObject(json, (GetType(DataTable))), DataTable)
        Return dt
    End Function
    Private Sub GetNames(strJSON As String)
        Dim Names = JsonConvert.DeserializeObject(Of List(Of ItemsJSon))(strJSON)
        '//
        For Each itm In Names
            lvwGetField.Items.Add(itm.name)
        Next
    End Sub
End Class
Public Class ItemsJSon
    Public Property id As String
    Public Property name As String
End Class
ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...
 
 
 | 
 
xขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึงคุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน  |