Dot-Net

如何使用 .NET 創建 JSON 數據?

  • February 23, 2017

目前,我正在建構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

引用自:https://stackoverflow.com/questions/6452769