using Newtonsoft.Json.Linq;
public static void Main()
Sidebar sb = new Sidebar();
string json = JsonConvert.SerializeObject(sb, Formatting.Indented);
[JsonConverter(typeof(NumberedPropertiesConverter))]
public string Foo { get { return "foo property"; } }
public string Hurry = "hurry";
public string Dont_Spam_This_Button = "don't spam this button";
public string Navigation = "navigation";
public string Overview = "overview";
public string Bar { get { return "bar property"; } }
class NumberedPropertiesConverter : JsonConverter
public override bool CanConvert(Type objectType)
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
JObject jo = new JObject();
foreach (MemberInfo member in value.GetType().GetMembers())
if (member.MemberType == MemberTypes.Field)
memberVal = ((FieldInfo)member).GetValue(value);
else if (member.MemberType == MemberTypes.Property)
memberVal = ((PropertyInfo)member).GetValue(value);
JToken token = memberVal != null ? JToken.FromObject(memberVal, serializer) : null;
jo.Add(count.ToString(), token);
public override bool CanRead
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
throw new NotImplementedException();