Набор данных SQL в JSON - PullRequest
       6

Набор данных SQL в JSON

2 голосов
/ 12 ноября 2010

Хорошо, я пытался понять это, и я прочитал страницу MSDN на JavaScriptSerializer. Тем не менее, я до сих пор не могу понять, как заставить это работать на странице asp.net. Я хочу преобразовать свой набор данных в строку json, чтобы я мог отобразить его с помощью FLOT (инструмент построения графиков)


ЭТО СДЕЛАНО, ЭТО РАБОТАЕТ СПАСИБО ДЛЯ ВАШИХ ПОМОЩНИКОВ: это на vb.net для будущих людей

Imports System.Web.Script.Serialization

....

Dim myObject = dataset.GetXml()
Dim jsonString = (New JavaScriptSerializer()).Serialize(myObject)

Ответы [ 4 ]

4 голосов
/ 12 ноября 2010

Обратитесь к сборке System.Web.Extensions.dll, а затем выполните следующее:

using System.Web.Script.Serialization;

....

var myObject = ... your stuff ...
var jsonString = new JavaScriptSerializer().Serialize(myObject);

Для получения дополнительной информации посетите страницу MSDN .

2 голосов
/ 12 ноября 2010

Я делал следующее, когда работал над проектом с использованием PlotKit. Я создаю веб-сервис для возврата данных и устанавливаю формат ответа Jason ... это было некоторое время назад ... также должно работать в 3.5

Вот образец

<WebMethod()> _
    <Script.Services.ScriptMethod(UseHttpGet:=True, ResponseFormat:=ResponseFormat.Json)> _
      Public Function GetSales(ByVal a As String) As Generic.List(Of Sale)
        Dim _conn As SqlConnection = New SqlConnection(connstr)
        Dim _dr As SqlDataReader
        Try
            Dim _cmd As SqlCommand = New SqlCommand("select * from sales", _conn)
            _conn.Open()
            _dr = _cmd.ExecuteReader(CommandBehavior.CloseConnection)

            If _dr.HasRows Then
                Dim s As Sale
                Dim c As New Generic.List(Of Sale)
                While _dr.Read
                    s = New Sale
                    With s
                        .Month = _dr("monthname")
                        .TheSale = _dr("sale")
                    End With
                    c.Add(s)
                End While

                Return c
            End If

        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            _conn.Close()
        End Try

              End Function

End Class

Вот класс объекта ... обратите внимание, я сериализую объект.

<Serializable()> _
Public Class Sale
    Private _month As String
    Private _sale As String

    Public Property Month() As String
        Get
            Return _month
        End Get
        Set(ByVal value As String)
            _month = value
        End Set
    End Property

    Public Property TheSale() As String
        Get
            Return _sale
        End Get
        Set(ByVal value As String)
            _sale = value
        End Set
    End Property
End Class
1 голос
/ 12 ноября 2010
public static string DStoJSON(DataSet ds)
{
   StringBuilder json = new StringBuilder();

   foreach (DataRow dr in ds.Tables[0].Rows)
   {
       json.Append("{");

       int i = 0;
       int colcount = dr.Table.Columns.Count;

       foreach (DataColumn dc in dr.Table.Columns)
       {
           json.Append("\"");
           json.Append(dc.ColumnName);
           json.Append("\":\"");
           json.Append(dr[dc]);
           json.Append("\"");

           i++;
           if (i < colcount) json.Append(",");

       }
       json.Append("\"}");
       json.Append(",");
   }
   return json.ToString();
}

Вероятно, наиболее полезным для вас является цикл набора данных вместо stringbuilder. Вы можете зациклить их в объекте, а затем использовать библиотеку javascript serializer.

Или даже лучше, если вы используете asp.net mvc, вы можете просто сделать это:

return Json(List<myobject>, JsonRequestBehavior.AllowGet);

но этот путь быстрый и легкий! - Я не совсем проверял это! добавленная запятая может быть неправильной (или код может быть улучшен), и последняя запятая строки требует обработки

Я пользуюсь способом mvc и никогда не оглядывался назад:)

1 голос
/ 12 ноября 2010

Ознакомьтесь с DataContractJsonSerializer и этой статьей на MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...