using System.Collections.Generic;
using Newtonsoft.Json.Serialization;
public static void Main()
List<Bar> bars = new List<Bar>
JsonSerializerSettings settings = new JsonSerializerSettings
ContractResolver = new CustomResolver(),
Formatting = Formatting.Indented
string json = JsonConvert.SerializeObject(bars, settings);
class CustomResolver : DefaultContractResolver
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);
foreach (JsonProperty prop in properties)
if (prop.PropertyType == typeof(Foo))
prop.ShouldSerialize = obj =>
Foo foo = (Foo)type.GetProperty(prop.PropertyName).GetValue(obj);
public bool Enabled { get; set; }
public string Name { get; set; }
public Foo SomeFoo { get; set; }
public Foo OtherFoo { get; set; }