0

我在使用 Javascript Serializer 反序列化到以下实体时遇到问题。请帮忙

JSON字符串:

{"AccountNo":0,"EmailAddress":"test@gmail.com","Destination_Prefernce":[{"Value":"Test Data"}]}

Java 代码

public class EMailPreferenceEntity
{
private int _accountNo;
private string emailAddress;
private DestinationPreferences _destinationPrefernce = new DestinationPreferences();

public int AccountNo
{
    get { return _accountNo; }
    set { _accountNo = value; }
}

public string EmailAddress
{
    get { return emailAddress; }
    set { emailAddress = value; }
}

public DestinationPreferences Destination_Prefernce
{
    get { return _destinationPrefernce; }
    set { _destinationPrefernce = value; }
}

}

处理程序文件:

public class AjaxHandler : IHttpHandler, IRequiresSessionState
{

public void ProcessRequest (HttpContext context) {
    string jsData = context.Request["Data"];
    if (!string.IsNullOrEmpty(jsData))
    {
        JavaScriptSerializer ser = new JavaScriptSerializer();
        EMailPreferenceEntity jsEntity = ser.Deserialize<EMailPreferenceEntity>(jsData);            
    }
}
4

1 回答 1

0

类型擦除意味着您的列表将在编译后变为列表,因此,当您的 http 请求到达时,它将尝试反序列化列表,并且可能不会命中您为列表注册的任何内容。

我不确定您的序列化程序如何处理它,但在 Gson 的情况下,您从泛型创建一个 TypeToken,以便在编译后类型和序列化程序之间的连接不会丢失。

于 2012-07-11T13:03:20.900 回答