0

Facebook の FQL クエリ メソッドと同様の方法で、データベースから必要なものを JSON テキスト結果として出力できる関数を作成しました。

同じ関数を使用して出力をディクショナリとして取得したり、(Dictionary) のリストを他の目的で VB 関数と共に使用したりすることもできます。

Public Shared Function getDataList(sql As String, output As String, useDb As String, labelName As String, fileName As String)
    Dim dataDetail
    '' This function will return the content of a query as either a key/value dictionary, or a key(key/value) result for formating 
    '' as JSON for JS handling or a Dictionary to use with server side codes

    If labelName <> "" Then
        dataDetail = New List(Of Generic.Dictionary(Of String, String))
    Else
        dataDetail = New Generic.Dictionary(Of String, Generic.Dictionary(Of String, String))
    End If

    Dim connection As OdbcConnection = Common.getConnection(useDb)
    Try
        connection.Open()
        Dim connect As OdbcCommand = Common.createCommand(sql, connection, useDb)

        Dim getData As New DataTable()
        getData.Load(connect.ExecuteReader(CommandBehavior.CloseConnection))
        For Each row In getData.Rows
            Dim rowDetail As New Generic.Dictionary(Of String, String)
            For Each column In getData.Columns
                Dim theData = row(column)

                If IsDBNull(theData) Then
                    theData = ""
                End If
                If LCase(output) = "json" Then
                    theData = HttpContext.Current.Server.HtmlDecode(theData)
                End If

                    rowDetail.Add(column.ToString, theData)

            Next

        Next
        connection.Close()
    Catch theError As Exception
        HttpContext.Current.Response.Write(theError)
    Finally
        connection.Dispose()
    End Try
    If output = "json" Then
        Dim serializer As New JavaScriptSerializer
        HttpContext.Current.Response.Write(serializer.Serialize(dataDetail))
    ElseIf output = "dictionary" Then
        Return dataDetail
    End If
End Function

これは問題なく動作し、データベースからデータをすばやく取得するのに非常に便利であることがわかりました。

私が抱えている唯一の問題は、出力を JSON ファイルとして取得するときに、エンコードされた HTML としてデータベースに保存されているものをすべて変換して、ブラウザーに適切に表示することです。

この線

theData = HttpContext.Current.Server.HtmlDecode(theData)

これを行うことを意図しており、そうしています...ちょっと...しかし、今日はこのキャラクター:

&#39;

デコードしていません。

何か案は?!

4

1 に答える 1

0

ああ...そのキャラクターはサポートされていません!

代わりに独自の関数を作成しました

Public Shared Function htmlDecode(str As String) As String
    Return Replace(HttpContext.Current.Server.HtmlDecode(str), "&#39;", "'")
End Function

Public Shared Function htmlEncode(str As String) As String
    Return Replace(HttpContext.Current.Server.HtmlEncode(str), "&#39;", "'")
End Function

すべてが今働いています!

于 2012-05-02T13:25:36.647 に答える