using Newtonsoft.Json.Linq;
public static void Main()
Foo foo = new Foo { MyRootAttr = "My Value" };
string json = JsonConvert.SerializeObject(foo, Formatting.Indented);
Console.WriteLine("\n------------\n");
Foo foo1 = JsonConvert.DeserializeObject<Foo>(json);
Console.WriteLine("MyRootAttr: " + foo1.MyRootAttr);
[JsonConverter(typeof(WrappedStringConverter))]
public string MyRootAttr { get; set; }
class WrappedStringConverter : JsonConverter
public override bool CanConvert(Type objectType)
return (objectType == typeof(string));
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
string s = (string)value;
JObject jo = new JObject(new JProperty("value", s));
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
JObject jo = JObject.Load(reader);
return (string)jo["value"];