Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带特殊键的词典_C#_Asp.net_Asp.net Core - Fatal编程技术网

C# 带特殊键的词典

C# 带特殊键的词典,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,有没有办法实现一个只能使用特定密钥的字典?下面是一个json: { “数据”:[ {“用户名”:“某些值”}, {“家族”:“某些价值”} ] } 模型如下: 公共类请求{ 公共列表数据{get;set;} } 那么,有没有办法实现字典的键,它只能接受用户名和族?正如Ryan Wilson所说,您可以创建一个类(例如UserFamily),它有两个属性:用户名和族,然后使用列表来存储数据。然后,使用JsonConvert.SerializeObject()方法序列化对象并获取Json数据 要

有没有办法实现一个只能使用特定密钥的字典?下面是一个json:

{
“数据”:[
{“用户名”:“某些值”},
{“家族”:“某些价值”}
]
}
模型如下:

公共类请求{
公共列表数据{get;set;}
}

那么,有没有办法实现字典的键,它只能接受
用户名

正如Ryan Wilson所说,您可以创建一个类(例如UserFamily),它有两个属性:用户名和族,然后使用
列表
来存储数据。然后,使用JsonConvert.SerializeObject()方法序列化对象并获取Json数据

要在asp.net core中使用Newtinsoft.json,可以参考以下步骤:

  • 通过Nuget安装Microsoft.AspNetCore.Mvc.NewtonsoftJson

  • 在Startup.ConfigureServices方法中添加
    .AddNewtonsoftJson()

         services.AddControllersWithViews().AddNewtonsoftJson();
    
  • 在模型和控制器中,使用Newtonsoft.Json添加
    参考:

     public class UserFamily
     {
         [JsonProperty("username")]
         public string UserName { get; set; }
         [JsonProperty("family")]
         public string Family { get; set; }
     }
     public class Request
     {
         [JsonProperty("data")]
         public List<UserFamily> Data { get; set; }
     }
    
    公共类UserFamily
    {
    [JsonProperty(“用户名”)]
    公共字符串用户名{get;set;}
    [JsonProperty(“家族”)]
    公共字符串族{get;set;}
    }
    公共类请求
    {
    [JsonProperty(“数据”)]
    公共列表数据{get;set;}
    }
    
    控制器中的代码:

         List<UserFamily> data = new List<UserFamily>()
         {
             new UserFamily(){ UserName="John", Family="Smith"},
             new UserFamily(){ UserName="Buchanan", Family="Steven"}
         };
    
         var request = new Request() { Data = data };
    
         var result = JsonConvert.SerializeObject(request);
    
    列表数据=新列表()
    {
    新UserFamily(){UserName=“John”,Family=“Smith”},
    新UserFamily(){UserName=“Buchanan”,Family=“Steven”}
    };
    var request=new request(){Data=Data};
    var result=JsonConvert.SerializeObject(请求);
    
    结果如下:

  • 此外,如果族和用户包含关系,则可以检查以下链接来配置它们之间的关系:


    那么,数据中是否只有名称为“username”和“family”的对象??为什么要使用
    词典的
    列表
    ?看起来您将从
    json
    中获得一个对象数组。你能提供更多的样本数据吗?不,它可以有多个对象,但它们是静态的,而不是动态的。这里有一个字典的平均值列表@Ryanwilson为什么不创建一个具有两个属性的类,
    UserName
    Family
    ,并对其使用
    Newtonsoft
    JsonProperty
    属性将其设置为小写,然后使用自定义类的
    列表进行反序列化?我认为没有必要使用
    字典
    ,但是如果您坚持使用
    字典
    列表
    ,并且希望阻止它使用除这两个键之外的任何其他键,那么您需要创建一个
    自定义
    字典
    ,实现
    接口
    ,并实现您自己的
    。添加
    -()您能帮助我如何使用Newtonsoft吗@RyanWilson
    Newtonsoft
    只是一个可以安装在项目中的
    nuget
    软件包,它广泛用于安装后的
    序列化
    反序列化
    。您可以使用Newtonsoft.Json通过
    将其导入自定义类
    然后在自定义类中,在属性上方执行
    [JsonProperty(“用户名”)]
    ,即
    [JsonProperty(“用户名”)]公共字符串用户名{get;set;}