-Fix passed in JsonConverter not overriding internally specified JsonConverter

This commit is contained in:
JamesNK
2010-01-28 07:20:01 +00:00
parent be6ed7daaa
commit fa85ebfbbf
5 changed files with 53 additions and 9 deletions
@@ -102,6 +102,40 @@ namespace Newtonsoft.Json.Tests.Converters
}
]", json);
}
public class TestDataTableConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
DataTable d = (DataTable) value;
writer.WriteValue(d.TableName);
}
public override object ReadJson(JsonReader reader, Type objectType, JsonSerializer serializer)
{
//reader.Read();
DataTable d = new DataTable((string)reader.Value);
return d;
}
public override bool CanConvert(Type objectType)
{
return (objectType == typeof (DataTable));
}
}
[Test]
public void PassedInJsonConverterOverridesInternalConverter()
{
DataTable t1 = new DataTable("Custom");
string json = JsonConvert.SerializeObject(t1, Formatting.Indented, new TestDataTableConverter());
Assert.AreEqual(@"""Custom""", json);
DataTable t2 = JsonConvert.DeserializeObject<DataTable>(json, new TestDataTableConverter());
Assert.AreEqual(t1.TableName, t2.TableName);
}
}
}
#endif