Dot-Net
如何使用 .NET 創建 JSON 數據?
目前,我正在建構json數據,如下所示:
<%@ Page Language="VB" Debug="True" EnableViewState="false" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="System.IO" %> <script runat="server"> Dim objSQLConnection As SqlConnection Dim objSQLCommand As SqlCommand Dim objSQLDataReader As SqlDataReader Dim objJSONStringBuilder As StringBuilder Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Response.Clear() Response.ContentType = "application/json" Response.Write(get_json()) Response.End() End Sub Function get_json() As String objJSONStringBuilder = New StringBuilder() objSQLConnection = New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("connString")) objSQLCommand = New SqlCommand("sql query goes here", objSQLConnection) objJSONStringBuilder.Append("[") objSQLCommand.Connection.Open() objSQLDataReader = objSQLCommand.ExecuteReader() While objSQLDataReader.Read() objJSONStringBuilder.Append("{") objJSONStringBuilder.Append("""col1""") objJSONStringBuilder.Append(":") objJSONStringBuilder.Append("""" & objSQLDataReader("col1") & """") objJSONStringBuilder.Append(",") objJSONStringBuilder.Append("""col2""") objJSONStringBuilder.Append(":") objJSONStringBuilder.Append("""" & objSQLDataReader("col2") & """") objJSONStringBuilder.Append(",") objJSONStringBuilder.Append("""col3""") objJSONStringBuilder.Append(":") objJSONStringBuilder.Append("""" & objSQLDataReader("col3") & """") objJSONStringBuilder.Append("},") End While objSQLDataReader.Close() objSQLCommand.Connection.Close() objJSONStringBuilder.Remove(objJSONStringBuilder.Length - 1, 1) objJSONStringBuilder.Append("]") Return objJSONStringBuilder.ToString End Function </script>這是使用 .NET 創建 JSON 數據的首選方法嗎?
我想我應該使用 asmx Web 服務並將數組轉換為 json?但是我看到的所有例子都是在 C# 中的。
通常,使用 ASP.NET,您不應該做任何事情來序列化為 JSON。只需使用正確的類型發出您的請求,正確返回它,ASP.NET 就會為您序列化為 JSON。它也可以反序列化。
我的盒子上沒有 VB,但如果您想使用 JavaScriptSerializer 類,您的項目必須針對 .NET Framework 3.5 或 .NET Framework 4.0(不是 .NET Framework 3.5 客戶端配置文件,也不是 .NET Framework 4.0 客戶端配置文件)。將 System.Web.Extensions.dll 添加到引用中。
C# 中的一個範例是:
public String Index() { Object[] myArray = new Object[3]; myArray[0] = new { col1 = "foo", col2 = "bar" }; myArray[1] = new { col1 = "fizz", col2 = "buzz" }; myArray[2] = new { col1 = "fizz", col2 = "buzz" }; JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Serialize(myArray); }這個函式的輸出是:
[{"col1":"foo","col2":"bar"},{"col1":"fizz","col2":"buzz"},{"col1":"fizz","col2":"buzz"}]轉換成VB應該很容易。
更新: VB版本:
Function get_json() As String Dim myArray(2) As Object myArray(0) = New With {Key .col1 = "foo", .col2 = "bar"} myArray(1) = New With {Key .col1 = "fizz", .col2 = "buzz"} myArray(2) = New With {Key .col1 = "fizz", .col2 = "buzz"} Dim serializer As New JavaScriptSerializer() Return serializer.Serialize(myArray) End Function相同的輸出,只是不要忘記 import
System.Web.Script.Serialization。