在快速浏览在线可用信息后。哎呀,这种格式很烦人。
我建议您首先定义一个基本类型、每个“种类”的子类和一个 custom converter 来反序列化它们。可能看起来像这样;
public abstract class RedditBase {
}
public class RedditListing : RedditBase {
public string Before { get; set; }
public string After { get; set; }
public List<RedditBase> Children { get; set; }
}
public class RedditConverter : JsonConverter<RedditBase>
{
public override void WriteJson(JsonWriter writer, RedditBase value, JsonSerializer serializer)
=> throw new NotImplementedException();
public override RedditBase ReadJson(JsonReader reader, Type objectType, RedditBase existingValue, bool hasExistingValue, JsonSerializer serializer)
{
var obj = JObject.Load(reader);
var data = (JObject)obj["data"];
switch ((string)obj["kind"])
{
case "Listing":
{
var list = new RedditListing();
serializer.Populate(data.CreateReader(), list);
return list;
}
default:
throw new NotImplementedException();
}
}
}