Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create JSON data with .NET?

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#.

like image 612
nami Avatar asked Jun 23 '11 10:06

nami


3 Answers

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.

like image 153
kiewic Avatar answered Oct 16 '22 12:10

kiewic


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.

like image 27
Peter Avatar answered Oct 16 '22 11:10

Peter


You can try Json.NET. It's a very popular library for handle json object on .net platform.

like image 21
ADIMO Avatar answered Oct 16 '22 10:10

ADIMO