JavaScriptSerializer. Как игнорировать собственность - PullRequest
16 голосов
/ 13 мая 2011

Я знаю о ScriptIgnoreAttribute.

Но что, если я хочу игнорировать свойство, основанное на критериях? Например, как игнорировать свойство nullable при сериализации, только если оно пустое и не содержит никакого значения?

Ответы [ 3 ]

27 голосов
/ 05 сентября 2015

https://msdn.microsoft.com/tr-tr/library/system.web.script.serialization.scriptignoreattribute(v=vs.110).aspx

Использование [ScriptIgnore]

using System;
using System.Web.Script.Serialization;

public class Group
{
    // The JavaScriptSerializer ignores this field.
    [ScriptIgnore]
    public string Comment;

    // The JavaScriptSerializer serializes this field.
    public string GroupName;
}
7 голосов
/ 13 мая 2011

Лучший возможный ответ, который у меня есть, - создать собственный JavaScriptConverter и проанализировать свойство на основе ваших собственных условий.

public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
  //...
  if (!object.ReferenceEquals(dictionary["MyProperty"],null)){
    // My Code
  }
  //...
}
3 голосов
/ 13 мая 2015

Я использовал внутренние вместо общедоступных свойств, и у меня это сработало

...