使用转换器反序列化json



我正试图将一些json反序列化为.net类:

{"reset": true, "cursor": "xxxx", "has_more": true, "entries": [
    ["/ict", {
        "revision": 22,
        "rev": "16010e2631",
        "thumb_exists": false,
        "bytes": 0,
        "modified": "Sat, 11 Sep 2010 00:11:24 +0000",
        "path": "/ICT",
        "is_dir": true,
        "size": "0 bytes"
    }],
    ["/ict/docs", {
        "revision": 1772,
        "rev": "6ec010e2631",
        "thumb_exists": false,
        "bytes": 0,
        "modified": "Wed, 15 Sep 2010 09:55:24 +0000",
        "path": "/ICT/Docs",
        "is_dir": true,
        "size": "0 bytes"
    }]
]}

我在条目部分遇到了问题,每个数组都以一个字符串开头,但没有键。应该反序列化到的类如下所示:

[JsonConverter(typeof(DeltaEntryConverter))]  
public class DeltaEntry
{                
    public string Path { get; set; }        
    public MetaData MetaData { get; set; }
}

我想使用jsonConverter,但如果使用转换器,我不确定如何将对象(每个数组中的第二个索引)反序列化为元数据类。

给定要转换的对象,可以使用ToObject<T>()来获取转换后的对象。在您的情况下,您希望将数组中的第二个项转换为MetaData对象。

public class DeltaEntryConverter : JsonConverter
{
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        var arr = (JArray)serializer.Deserialize(reader);
        return new DeltaEntry
        {
            Path = (string)arr[0],
            MetaData = arr[1].ToObject<MetaData>(),
        };
    }
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
    public override bool CanConvert(Type objectType)
    {
        throw new NotImplementedException();
    }
}

相关内容

  • 没有找到相关文章

最新更新