JavaScriptSerializer Serializer不处理空值

时间:2013-11-27 10:18:56

标签: c# wpf javascriptserializer jsonserializer datacontractjsonserializer

在我的WPF MVVM应用程序中,我从JSON格式的宁静WCF服务获取数据。 我正在使用JavaScriptSerializer对这些数据进行反序列化。但是如果有的话,这就无法处理null值。在这种情况下,我必须发送一些值而不是我不想发送的DBnull值。

WCF服务:

    [OperationContract]
    [WebInvoke
        (
            Method = "GET",
            ResponseFormat = WebMessageFormat.Json,
            UriTemplate = "ReportEmployee/All"

        )
    ]
    dcReportEmployee[] GetReportEmployee();

其中dcReportEmployee是datacontract

[DataContract]
public class dcReportEmployee
{
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public Int32 Status { get; set; }
}

在WPF应用程序中:

        string sUrl = "LocalHostURL";

        System.Net.WebRequest request = System.Net.HttpWebRequest.Create(sUrl);

        request.Method = "GET";

        request.UseDefaultCredentials = true;

        request.ContentLength = 0;

        System.Net.HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse;

        Stream objResponseStream = response.GetResponseStream();

        StreamReader reader = new StreamReader(objResponseStream);

        string objResponseString = reader.ReadToEnd();

        response.Close();

        JavaScriptSerializer objJsonserialiser = new JavaScriptSerializer();

        T[] arrResult = objJsonserialiser.Deserialize<T[]>(objResponseString);

如果objResponseString包含任何空值,则其失败。我本可以发送一些null值的替换,但我不希望这样。

有没有想过这个?

1 个答案:

答案 0 :(得分:0)

使用Newtonsoft Library进行序列化。