JavaScriptSerializer 可以排除具有空/默认值的属性吗? [英] Can JavaScriptSerializer exclude properties with null/default values?

查看:24
本文介绍了JavaScriptSerializer 可以排除具有空/默认值的属性吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 JavaScriptSerializer 来序列化一些实体对象.

I'm using JavaScriptSerializer to serialize some entity objects.

问题是,许多公共属性包含空值或默认值.有什么办法可以让 JavaScriptSerializer 排除具有 null 或默认值的属性?

The problem is, many of the public properties contain null or default values. Is there any way to make JavaScriptSerializer exclude properties with null or default values?

我希望生成的 JSON 不那么冗长.

I would like the resulting JSON to be less verbose.

推荐答案

对我有用的解决方案:

序列化的类和属性将被装饰如下:

The serialized class and properties would be decorated as follows:

[DataContract]
public class MyDataClass
{
  [DataMember(Name = "LabelInJson", IsRequired = false)]
  public string MyProperty { get; set; }
}

IsRequired 是关键项.

IsRequired was the key item.

实际的序列化可以使用 DataContractJsonSerializer 来完成:

The actual serialization could be done using DataContractJsonSerializer:

public static string Serialize<T>(T obj)
{
  string returnVal = "";
  try
  {
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
    using (MemoryStream ms = new MemoryStream())
    {
      serializer.WriteObject(ms, obj);
      returnVal = Encoding.Default.GetString(ms.ToArray());
    }
  }
  catch (Exception /*exception*/)
  {
    returnVal = "";
    //log error
  }
  return returnVal;
}

这篇关于JavaScriptSerializer 可以排除具有空/默认值的属性吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆