Словарь не поддерживается для десериализации массива - PullRequest
0 голосов
/ 14 июля 2011

ОБНОВЛЕНИЕ:

У меня есть следующий код, где я пытаюсь использовать returned данные JSON, десериализовать их и вернуть 1 часть этих данных обратно пользователю.

<%@ Page Language="VB" Debug="True" EnableViewState="false" %>
<%@ Import Namespace="System.Web.Script.Serialization" %>

<script runat="server">
    Class Item
        Public Property some_number() As Double
            Get
                Return m_some_number
            End Get
            Set(ByVal value As Double)
                m_some_number = value
            End Set
        End Property
        Private m_some_number As Double
        Public Property some_text() As String
            Get
                Return m_some_text
            End Get
            Set(ByVal value As String)
                m_some_text = value
            End Set
        End Property
        Private m_some_text As String
        Public Property serial_number() As String
            Get
                Return m_serial_number
            End Get
            Set(ByVal value As String)
                m_serial_number = value
            End Set
        End Property
        Private m_serial_number As String
    End Class


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Response.Clear()
        Response.Write(set_profiles())
        Response.End()
    End Sub

    Function set_profiles() As String
        ' get returned json data
        Dim strChanged As String = CType(Request.Form("strChanged"), String)

        ' deserialize returned data
        Dim jss = New JavaScriptSerializer()

        ' assuming i need to change this line now?
        Dim dict As Dictionary = jss.Deserialize(List(Of Item))(strChanged)

        Return dict("some_number")
    End Function
</script>

Я не понимаю, как десериализовать в класс Item, а затем как вернуть данные обратно.

1 Ответ

2 голосов
/ 14 июля 2011

Ваши данные - это массив, и вы пытаетесь десериализовать его в словарь. Это не сработает.

Либо измените свои входные данные, либо десериализуйте их в массив.

Вы также можете объявить класс и использовать его при десериализации.

C #, извините:

class Item
{
    public double some_number { get; set; }
    public string some_text { get; set; }
    public string serial_number { get; set; }
}

и десериализацию до List(Of Item)

...