【发布时间】:2020-08-26 15:01:33
【问题描述】:
我有一个如下所示的 json 文件:
{
"tags": {
"t1": {
"description": "bar"
},
"t2": {
"description": {
"$ref": "./t2.md"
}
}
}
}
我想像这样用 Json.NET 反序列化它:
var baz = JsonConvert.DeserializeObject<Baz>(File.ReadAllText(@"baz.json"));
//...
internal class Baz
{
[JsonProperty("tags")]
internal Tags Tags;
}
internal class Tags: Dictionary<string, Tag>
{
}
internal class Tag
{
[JsonProperty("description")]
internal Description Description;
}
internal class Description // FIXME: can be string, Dictionary or List
{
}
如何定义Description 类,它可以是string 或Dictionary<string, string>?我试过继承一个抽象方法,但是反序列化器总是返回null。
【问题讨论】:
-
描述的字段'$ref'可以有别的名字吗?
-
不,它要么是字符串,要么是
{"$ref": "..."}对象。 -
@RoarS。它是一个带有一个 Key-Value-Pair 的 JS 对象,因此相当于一个带有一个条目的字典。
-
@Vernou 谢谢,这与您发布的第二个链接中的
obj["$ref"]合作。请添加答案,以便我接受。