c# - 用于 JSON 序列化的条件 ScriptIgnore

标签 c# json jsonserializer

有没有办法有条件地从 JSON 序列化中排除项目?我在带有 WebAPI 的 .NET4 应用程序中使用 C#。我有[DataMember][ScriptIgnore]已经在我的类里面了,一切正常。我想做的是不在运行时根据属性的值包含某些属性

例如,我可能只想序列化 List<Foo> myFoo

myFoo != null && myFoo.Count > 0

JSON 在客户端被转换回我自己的 JS 对象,这将像 myFoo: [] 一样实例化所有属性。 .只是没有必要将这些以 JSON 格式发送给客户端,因为它本质上不会对对象产生任何影响,只会发送更多数据并在客户端上使用更多处理。这是一个非常依赖 JS 的 HTML5 移动网站,我正在努力减少尽可能多的数据和处理。

最佳答案

感谢 OP 回答您的问题,但如果我遇到同样的情况,提供更多信息会更好。这很累人,但我终于找到了做到这一点的方法。关于它的内容不多,但是according to a lowly page on Json.net's archive这是它的工作原理:

public class Tricorn
{
   public string RocketFuel { get; set; }

   public bool ShouldSerializeRocketFuel()
   {
      return !string.IsNullOrEmpty(this.RocketFuel.Length);
   }
}

关键是创建一个带有谓词“ShouldSerialze”的属性名称的方法。返回值指示它是否应该被序列化,Json.net 处理其余部分。希望这对任何人都有帮助!

关于c# - 用于 JSON 序列化的条件 ScriptIgnore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212302/

相关文章:

c# - 无法从字符串转换为 NewtonSoft.Json.JsonReader

c# - 在 DataGridView 中对日期进行排序

json - 我将如何使用 SwiftyJSON 解析这种类型的 JSON?

c# - 属性或索引器不能分配给 "--"它是只读的

java - 在以 JSON 格式发布到 API 时,如何正确发送值中包含 double 和字符串的 HashMap

javascript - 显示此元素,而无需每次都重复代码

java - jackson 枚举序列化和反序列化器

jsonserializer - laravel 接口(interface) 'JsonSerializable' 未找到

c# - Linq to Entity AcceptAllChanges 保存更改

c# - 在 ASP.NET C# Web 应用程序中动态创建图像的正确方法?