|
สำหรับโค้ดในวันนี้แอดมินจะทำการจำลองเหตุการณ์ว่า เราสามารถนำข้อมูลมาจากฐานข้อมูลใดๆก็ได้ เช่น 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
|