I'm using JavaScriptSerializer to serialize some entity objects.

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?

I would like the resulting JSON to be less verbose.

推荐答案

The solution that worked for me:

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 was the key item.

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;
}

Json相关问答推荐

无法根据vega规范中的条件设置文本 colored颜色

ArcGIS json到Geojson的变换

我发现GoFr响应总是包含在数据字段中,如何返回自定义响应?

给定一个包含两个数组的JSON输入文件,如何使用Jolt将一个数组中的每个元素与另一个数组组合在一起?

在Zig中解析JSON失败

正向闪烁后的微调值

如何使用nifi从json文件中过滤属性

我无法将来自 API 的数据显示到 FlatList 中,但我在 console.log 中看到了它.问题是什么?

JOLT JSON 将值从一对多转换为一对一

PowerShell:如何将哈希表输出为 json 并使用 foreach 循环将其存储在变量中?

使用 json_query 过滤嵌套列表中的元素

错误字符串的长度超过了maxJsonLength属性设置的值

json.decoder.JSONDecodeError:期望值:第 1 行第 1 列(字符 0)

JSON.stringify 不会转义?

Jsonpath 与 Jackson 或 Gson

jQuery JSON 响应总是触发 ParseError

如何在 Python 中合并两个 json 字符串?

如何使用 Json.NET 反序列化可以是两种不同数据类型的 JSON 属性

有没有一种快速的方法可以在文本编辑器中将 JavaScript 对象转换为有效的 JSON?

为什么 RestTemplate 不将响应表示绑定到 PagedResources?