使用Microsoft.AspNet.Odata进行条件序列化

时间:2019-06-07 14:30:42

标签: .net json.net asp.net-web-api2 odata

在将数据传输到客户端应用程序时,我们需要根据用户权限隐藏某些字段。

使用Json.Net及其ShouldSerialize方法,此应该很简单。...不幸的是,Microsoft的OData实现似乎没有使用Json.net作为其内部序列化程序。我没有被锁定使用Json.net解决方案。它似乎只是最有可能获得成功的候选人。

我一直在尝试为OData实现客户序列化程序,但是我发现的唯一例子似乎是几年前的,不再正确。
我们正在使用Microsoft.AspNet.Odata软件包的最新版本,由于我们正在利用许多新功能,因此无法还原。

我已经玩了几天,似乎应该是我下面的内容,但是到目前为止我还没有运气。

    public class NewtonsoftODataMediaTypeFormatter:ODataMediaTypeFormatter
    {
        public NewtonsoftODataMediaTypeFormatter(IEnumerable<ODataPayloadKind> payloadKinds)
            : base(payloadKinds)
        {

        }

        public override Task WriteToStreamAsync(
            Type type,
            object value,
            Stream writeStream,
            HttpContent content,
            TransportContext transportContext,
            CancellationToken cancellationToken)
        {
            using (StreamWriter writer = new StreamWriter(writeStream))
            {
                writer.Write(JsonConvert.SerializeObject(value));
            }

            return Task.CompletedTask;
        }
    }

0 个答案:

没有答案