ienumerable在json.net中序列化为[jsonobject],而无需使用属性



我想序列化iEnumerable作为jsonobject,就像它通过应用[jsonobject]属性序列化的方式,但是我无法通过引入此属性来更改DTO类。

有没有办法告诉(de)序列化器强制jsonobject(de)序列化?

是的,您可以使用自定义IContractResolver进行此操作。您需要做的就是创建一个从JSON.NET的DefaultContractResolver派生的解析器类,并覆盖CreateContract(Type)方法,如下所示,其中FooList被您的枚举类型替换为

class CustomResolver : DefaultContractResolver
{
    protected override JsonContract CreateContract(Type type)
    {
        if (type == typeof(FooList))
            return CreateObjectContract(typeof(FooList));
        return base.CreateContract(type);
    }
}

将解析器添加到序列化器设置中,并在序列化时使用这些设置:

var settings = new JsonSerializerSettings
{
    ContractResolver = new CustomResolver(),
    Formatting = Formatting.Indented
};
string json = JsonConvert.SerializeObject(yourObject, settings);

这是一个演示:https://dotnetfiddle.net/ocyju4

相关内容

  • 没有找到相关文章

最新更新