有没有办法有条件地从 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/