首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于JSON序列化的条件ScriptIgnore

用于JSON序列化的条件ScriptIgnore
EN

Stack Overflow用户
提问于 2012-04-18 23:07:12
回答 3查看 4.6K关注 0票数 3

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

例如,我可能只想在以下情况下序列化List<Foo> myFoo

myFoo != null && myFoo.Count > 0

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-24 23:45:34

我找到了Json.net,它允许我在运行时进行条件序列化。

票数 0
EN

Stack Overflow用户

发布于 2012-10-19 00:32:36

感谢OP回答你的问题,但如果我遇到同样的情况,更多的信息将是很好的。这让人精疲力竭,但我最终找到了方法。没有太多关于它的东西,但according to a lowly page on Json.net's archive下面是它的工作原理:

代码语言:javascript
复制
public class Tricorn
{
   public string RocketFuel { get; set; }

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

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

票数 7
EN

Stack Overflow用户

发布于 2012-04-20 22:06:57

在这里,使用getter可能是最好的选择:

代码语言:javascript
复制
[ScriptIgnore]
private List<Foo> myFoo;

public List<Foo> MyFoo
{
   get
   {
      if (this.myFoo != null && this.myFoo.Count > 0)
      {
         return this.myFoo;
      }
      else
      {
         return null;
      }
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10212302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档