我从一个包含一些我想清除的属性值的API中获取了一个大的Json文件。我要删除的一个简单示例是name属性中的“ << >>”。
string json = "{ 'name': '<<>>user name'}";
private class NameFix
{
[JsonProperty("name")]
[JsonConverter(typeof(NameFixer))]
public string Name { get; set; }
}
var name = JsonConvert.DeserializeObject<NameFix>(json);
是否可以在反序列化过程中清除属性,还是应该解析整个文件并先进行修改?我看过自定义的jsonconverter,但是我不确定这是否可以完成我需要的工作。我尝试过类似的操作,但发现jsonreader是只读的,因此无法设置值。
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;
}
}