c# - 如何使用 Json.Net 为数组项应用 CustomCreationConverter
问题描述
我花了很多时间研究如何使用 Json.Net 为数组项(而不是数组自身)应用 CustomCreationConverter。我试过JsonArrayAttribute
了,但它不适用于属性。自从
[AttributeUsage(AttributeTargets.Class |
AttributeTargets.Interface, AllowMultiple = false)]
public sealed class JsonArrayAttribute : JsonContainerAttribute
{
...
}
我的代码如下,我想从一个 json 文档中反序列化一个 AadlObjectPropertySchema 对象:
public class AadlObjectPropertySchema : AadlPropertySchema
{
// JsonArrayAttribute is not applicable to a property!!
// [JsonArray(ItemConverterType = typeof(AadlPropertySchemaConverter))]
public List<AadlPropertySchema> Properties { get; set; } = new List<AadlPropertySchema>();
}
// https://stackoverflow.com/questions/8030538/how-to-implement-custom-jsonconverter-in-json-net-to-deserialize-a-list-of-base
public class AadlPropertySchemaConverter : CustomCreationConverter<AadlPropertySchema>
{
...
public AadlPropertySchema Create(Type objectType, JObject jObject)
{
var _kind = (AadlPropertyTypeEnum)Enum.Parse(typeof(AadlPropertyTypeEnum),
(string)jObject.Property("type"));
switch (_kind)
{
case AadlPropertyTypeEnum.array:
return new AadlArrayPropertySchema();
case AadlPropertyTypeEnum.@object:
return new AadlObjectPropertySchema();
default:
return new AadlPropertySchema();
}
}
...
}
解决方案
推荐阅读
- node.js - 是否可以在不打开浏览器的情况下模拟网站上的用户操作?
- excel - Excel VBA:如何设置变量等于过滤条件?
- mysql - 使用“make”命令安装 mySQL 时出现致命错误 rpc/rpc.h
- python - 是否有从多个帧中提取单个像素的有效方法?
- azure - 为 Docker CLI 上下文更新 Microsoft Azure 区域
- python - 防止隐式强制转换
- modelica - Modelica model and its fmu give different results for the same input
- android - Android Studio Gradle - 发现任务':app:processDebugManifest'的配置有问题
- c++ - QVector 使用 Qt 按名称查找 QPushButton
- html - 为什么我的 jquery 不采用这个 iframe 的类?