12,162
社区成员
发帖
与我相关
我的任务
分享
''' <summary>
''' DataTable to JSON字符串
''' 前台可直接转换成二维数组。
''' </summary>
''' <param name="source"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function DataTableToJsonArray(source As DataTable) As String
If (source.Rows.Count = 0) Then Return ""
Dim sb As New StringBuilder("[")
Dim tChar As String = """"
For Each row As DataRow In source.Rows
sb.Append("[")
For i As Int32 = 0 To source.Columns.Count
sb.Append(tChar & row(i).ToString() + tChar + ",")
Next
sb.Remove(sb.Length - 1, 1)
sb.Append("],")
Next
sb.Remove(sb.Length - 1, 1)
sb.Append("]")
Return sb.ToString()
End Function
''' <summary>
''' 返回前台用的 JSON 数据.
''' </summary>
''' <param name="dt"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function DataTableToJson(dt As DataTable,
TableName As String) As String
Dim tChar As String = """"
If (Not dt Is Nothing AndAlso dt.Rows.Count > 0) Then
Dim JsonString As New StringBuilder()
If TableName.Length = 0 Then TableName = dt.TableName
JsonString.Append("{")
JsonString.Append(tChar & TableName & tChar & ":[")
For i As Int32 = 0 To dt.Rows.Count
JsonString.Append("{")
For j As Int32 = 0 To dt.Columns.Count
If (j < dt.Columns.Count - 1) Then
JsonString.Append(tChar & dt.Columns(j).ColumnName.ToString() & tChar & ":" & tChar & BaseDBHelper.ConvData.ToStr(dt.Rows(i)(j)) & tChar & ",")
ElseIf (j = dt.Columns.Count - 1) Then
JsonString.Append(tChar & dt.Columns(j).ColumnName.ToString() & tChar & ":" & tChar & BaseDBHelper.ConvData.ToStr(dt.Rows(i)(j)) & tChar)
End If
Next
If (i = dt.Rows.Count - 1) Then
JsonString.Append("}")
Else
JsonString.Append("},")
End If
Next
JsonString.Append("]}")
Return JsonString.ToString()
Else
Return Nothing
End If
End Function
var result = new WebClient().DownloadString("http://www.abc.com/site1/service1.ashx?xx=2342");
就得到了返回的json字符串。public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(UseHttpGet=true ,ResponseFormat = ResponseFormat.Json)]
public void HelloWorld()
{
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Clear();
Context.Response.ContentType = "application/json";
HelloWorldData data = new HelloWorldData();
data.Message = "HelloWorld";
Context.Response.Write(js.Serialize(data));
}
}
public class HelloWorldData
{
public String Message;
}