Inheritance Json.NET和对象集合,其中对象是类层次结构的一部分?
我有以下情况(关于这个问题):Inheritance Json.NET和对象集合,其中对象是类层次结构的一部分?,inheritance,json.net,Inheritance,Json.net,我有以下情况(关于这个问题): 文档类 一个文档可以包含多种类型的项目 就像这个节目: 但这会产生以下Json: { "items": { "$type": "System.Collections.Generic.List`1[[UserQuery+Item, LINQPadQuery]], mscorlib", "$values": [ 这不是我想要的,因为它指定了列表的类型,但不是每个项目的类型,但是我似乎不知道是否可以以及如何做到这一点 因此,我需要以下类型的Js
- 文档类
- 一个文档可以包含多种类型的项目
{
"items": {
"$type": "System.Collections.Generic.List`1[[UserQuery+Item, LINQPadQuery]], mscorlib",
"$values": [
这不是我想要的,因为它指定了列表的类型,但不是每个项目的类型,但是我似乎不知道是否可以以及如何做到这一点
因此,我需要以下类型的Json:
{
"items": [
{
"$type": "UserQuery+ItemA, LINQPadQuery",
"name": "Test Name"
},
{
"$type": "UserQuery+ItemB, LINQPadQuery",
"value": 42
}
]
}
我是否需要引入一个具有类型为
Item
的简单属性的包装器对象,并启用该属性?很接近了。尝试使用ItemTypeNameHandling
而不是TypeNameHandling
:
[JsonProperty("items", ItemTypeNameHandling = TypeNameHandling.All)]
public List<Item> Items = new List<Item>();
[JsonProperty(“items”,ItemTypeNameHandling=TypeNameHandling.All)]
公共列表项=新列表();
没问题。很乐意帮忙。
{
"items": [
{
"$type": "UserQuery+ItemA, LINQPadQuery",
"name": "Test Name"
},
{
"$type": "UserQuery+ItemB, LINQPadQuery",
"value": 42
}
]
}
[JsonProperty("items", ItemTypeNameHandling = TypeNameHandling.All)]
public List<Item> Items = new List<Item>();