我正在尝试将一些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,但如果我使用转换器,我不确定如何将对象(每个数组中的第二个索引)反序列化为元数据类。
答案 0 :(得分:2)
给定要转换的对象,可以使用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();
}
}