编辑Json属性,然后使用json.net反序列化

时间:2018-09-24 21:59:29

标签: c# json.net

我从一个包含一些我想清除的属性值的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;
    }
}

0 个答案:

没有答案