I am getting a large Json file back from an API that contains some property values that I would like to clean up. A simple example of what I would like to remove is the "<<>>" from the name property.
string json = "{ 'name': '<<>>user name'}";
private class NameFix
{
[JsonProperty("name")]
[JsonConverter(typeof(NameFixer))]
public string Name { get; set; }
}
var name = JsonConvert.DeserializeObject<NameFix>(json);
Is it possible to clean the property during the process of deserialization or should I parse the whole file and modify first? I have looked at custom jsonconverter but I'm not sure if this can accomplish what I need. I tried something like this, but found out the jsonreader is read only so the values cannot be set.
public class NameFixer : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value,
JsonSerializer serializer)
{
}
public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
{
if (reader.Value.ToString().Contains("<<>>"))
{
reader.Value = "test";
}
return serializer.Deserialize(reader, objectType);
}
public override bool CanConvert(Type objectType)
{
return false;
}
}