Reputation: 1266
At the moment, I am building json data as follows:
<%@ 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>
Is this the preferred method of creating JSON data using .NET?
I think I am supposed to use asmx web services with arrays converted to json? But all the examples I have seen are in C#.
Upvotes: 8
Views: 47212
Reputation: 14098
Normally, with ASP.NET, you shouldn't be doing anything to serialize to JSON. Just make your request with the correct type, return it correctly, and ASP.NET will serialize to JSON for you. It can also deserialize.
Upvotes: 8
Reputation: 324
Have you tried DataContractJsonSerializer ? http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx
Upvotes: 0
Reputation: 16400
I don't have VB on my box, but if you want to use JavaScriptSerializer Class your project must target .NET Framework 3.5 or .NET Framework 4.0 (not .NET Framework 3.5 Client Profile neither .NET Framework 4.0 Client Profile). Add System.Web.Extensions.dll to references.
An example in C# is:
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);
}
The output of this function is:
[{"col1":"foo","col2":"bar"},{"col1":"fizz","col2":"buzz"},{"col1":"fizz","col2":"buzz"}]
It should be easy to convert it into VB.
Update: VB version:
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
Same output, just don´t forget to import System.Web.Script.Serialization
.
Upvotes: 9
Reputation: 35885
The JavaScriptSerializer class is used internally by the asynchronous communication layer to serialize and deserialize the data that is passed between the browser and the Web server. You cannot access that instance of the serializer. However, this class exposes a public API. Therefore, you can use the class when you want to work with JavaScript Object Notation (JSON) in managed code.
To serialize an object, use the Serialize method. To deserialize a JSON string, use the Deserialize or DeserializeObject methods. To serialize and deserialize types that are not natively supported by JavaScriptSerializer, implement custom converters by using the JavaScriptConverter class. Then register the converters by using the RegisterConverters method.
Upvotes: 0