You can get the output you want by creating a custom JsonConverter
for your JSONSubTestClass2
class like this:
class JSONSubTestClass2Converter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(JSONSubTestClass2));
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
JSONSubTestClass2 jstc2 = (JSONSubTestClass2)value;
JObject jo = new JObject();
jo.Add(jstc2.id, JObject.FromObject(jstc2.info));
jo.WriteTo(writer);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
Then, serialize your classes like this:
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new JSONSubTestClass2Converter());
settings.Formatting = Formatting.Indented;
// Convert to JSON
string json = JsonConvert.SerializeObject(jtc, settings);