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 m
This code is block null and default(0) values for numeric types
private class NullPropertiesConverter: JavaScriptConverter {
public override object Deserialize(IDictionary < string, object > dictionary, Type type, JavaScriptSerializer serializer) {
throw new NotImplementedException();
}
public override IDictionary < string, object > Serialize(object obj, JavaScriptSerializer serializer) {
var jsonExample = new Dictionary < string,
object > ();
foreach(var prop in obj.GetType().GetProperties()) {
//this object is nullable
var nullableobj = prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(Nullable < > );
//check if decorated with ScriptIgnore attribute
bool ignoreProp = prop.IsDefined(typeof(ScriptIgnoreAttribute), true);
var value = prop.GetValue(obj, System.Reflection.BindingFlags.Public, null, null, null);
int i;
//Object is not nullable and value=0 , it is a default value for numeric types
if (!(nullableobj == false && value != null && (int.TryParse(value.ToString(), out i) ? i : 1) == 0) && value != null && !ignoreProp)
jsonExample.Add(prop.Name, value);
}
return jsonExample;
}
public override IEnumerable < Type > SupportedTypes {
get {
return GetType().Assembly.GetTypes();
}
}
}