根据用户确定要在Json.Net中序列化的属性 - c#

我正在创建一个ASP MVC Web API。我现在要根据正在执行请求的用户来确定要序列化对象的属性。 ApiController知道用户。基于用户,我有一个函数返回一个字符串数组,该字符串数组具有用户有权在模型上使用的属性名称。

如何将用户传递给ContractResolver,使其仅影响当前请求,而不会影响其他用户的同时请求?

c#大神给出的解决方案

您可以创建自定义ContractResolver

var json = JsonConvert.SerializeObject(
                new UserClass() {ID=666, Name="john", SurName="doe"},
                new JsonSerializerSettings() { ContractResolver = new CustomContractResolver(new[]{"ID", "SurName"}) }
            );

在此示例中,输出json仅包含IDSurName(不包括Name

public class UserClass
{
    public int ID { set; get; }
    public string Name {set; get;}
    public string SurName { set; get; }
}

public class CustomContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
{
    IEnumerable<string> _allowedProps = null;

    public CustomContractResolver(IEnumerable<string> allowedProps)
    {
        _allowedProps = allowedProps;
    }

    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        return _allowedProps.Select(p=>new JsonProperty() {
            PropertyName = p,
            PropertyType = type.GetProperty(p).PropertyType,
            Readable = true,
            Writable = true,
            ValueProvider = base.CreateMemberValueProvider(type.GetMember(p).First())
        } ).ToList();
    }
}

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

java.net.URI.create异常 - java

java.net.URI.create("http://adserver.adtech.de/adlink|3.0") 抛出java.net.URISyntaxException: Illegal character in path at index 32: http://adserver.adtech.de/adlink|3.0 虽然n…

在ASP.NET WebForms中在服务器端初始化bootsrap datatimepicker - javascript

我有这个HTML<div class='datepicker input-group date' id='datetimepickerStart'> <input type='text' class="form-control" /> <span c…

Javascript和Python JSON-未定义变量 - javascript

例如,如果您具有以下JSON对象(删除python的分号):values = { a: 1, b: { c: 2, d: { e: 3 } }, f: 4, g: 5 }; 如果您尝试在JS中打印values,它将正常工作。但是在Python中,它将返回错误NameError: name 'a' is not defined,这意味着未定…

JSON Post and Decode数组到PHP - php

我正在尝试使用JSON将数组发布到PHP文件。这没用。问题是什么也没发生。如果我将数据类型分解为:“ json”,则会收到警报(但没有数据)。这是我的jQuery代码var arr = new Array(); arr.push('1','Brussels|25'); arr.push('2',&#…