using Newtonsoft.Json.Serialization;
public static void Main()
Something = "This is something",
Something = "Child Object",
JsonSerializerSettings settings = new JsonSerializerSettings
ContractResolver = new NullSubstitutionPropertyValueResolver("Nothing to see here"),
Formatting = Formatting.Indented
string json = JsonConvert.SerializeObject(foo, settings);
public string Something { get; set; }
public string Nothing { get; set; }
public int Number { get; set; }
public Foo Child { get; set; }
public class NullSubstitutionPropertyValueResolver : DefaultContractResolver
private readonly string _substitutionValue;
public NullSubstitutionPropertyValueResolver(string substitutionValue)
_substitutionValue = substitutionValue;
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
JsonProperty result = base.CreateProperty(member, memberSerialization);
PropertyInfo property = member as PropertyInfo;
if (property.PropertyType == typeof(string))
result.ValueProvider = new StringValueProvider(property, _substitutionValue);
public class StringValueProvider : IValueProvider
private PropertyInfo _targetProperty;
private string _substitutionValue;
public StringValueProvider(PropertyInfo targetProperty, string substitutionValue)
_targetProperty = targetProperty;
_substitutionValue = substitutionValue;
public void SetValue(object target, object value)
_targetProperty.SetValue(target, value);
public object GetValue(object target)
object value = _targetProperty.GetValue(target);
return value == null ? _substitutionValue : value;