VB.net
- Public Class JSONConvert
- Public Shared Function DataTable2NameValueCollection(ByVal dt As DataTable) As NameValueCollection
- Dim columnlist As New List(Of String)()
- For Each column As DataColumn In dt.Columns
- columnlist.Add(column.ColumnName)
- Next
- Dim rowlist As New List(Of String)()
- For Each row As DataRow In dt.Rows
- Dim itemlist As New List(Of String)()
- For Each column As DataColumn In dt.Columns
- If column.DataType.Equals(GetType(Int32)) Or column.DataType.Equals(GetType(Double)) Then
- itemlist.Add(row(column.ColumnName))
- Else
- itemlist.Add(String.Format("""{0}""", row(column.ColumnName)))
- End If
- Next
- rowlist.Add(String.Format("[{0}]", String.Join(", ", itemlist.ToArray())))
- Next
- Dim nv As New NameValueCollection()
- nv.Add("columns", Array2JSONArray(columnlist.ToArray()))
- nv.Add("rows", Array2JSONArray(rowlist.ToArray()))
- Return nv
- End Function
- Public Shared Function DataTable2JSONObject(ByVal dt As DataTable) As String
- Dim nv As NameValueCollection = DataTable2NameValueCollection(dt)
- Return NameValueCollection2JSONObjectArray(nv)
- End Function
- Public Shared Function NameValueCollection2JSONObjectArray(ByVal nv As System.Collections.Specialized.NameValueCollection) As String
- Dim list As New List(Of String)()
- For Each name As String In nv.AllKeys
- If Regex.IsMatch(nv(name), "^(.*(\[|\]|{|})+.*|\d+)$") Then
- list.Add(String.Format("""{0}"": {1}", name, nv(name)))
- Else
- list.Add(String.Format("""{0}"": ""{1}""", name, nv(name)))
- End If
- Next
- Return String.Format("{{{0}}}", String.Join(", ", list.ToArray()))
- End Function
- Public Shared Function Array2JSONArray(ByVal arr As Array) As String
- If Regex.IsMatch(String.Join(", ", CType(arr, String())), "^(.*(\[|\]|{|})+.*|\d+)$") Then
- Return ObjectArray2JSONArray(arr)
- Else
- Return StringArray2JSONArray(arr)
- End If
- End Function
- Public Shared Function StringArray2JSONArray(ByVal arr() As String) As String
- If arr.Length = 0 Then
- Return ("[]")
- Else
- Return String.Format("[""{0}""]", String.Join(""", """, arr))
- End If
- End Function
- Public Shared Function ObjectArray2JSONArray(ByVal arr As Array) As String
- Return String.Format("[{0}]", String.Join(", ", CType(arr, String())))
- End Function
- End Class
沒有留言:
張貼留言