如何将 json 反序列化为字典 c# 并定义键?

how to deserialize json into dictionary c# and define the key?

我有这个class:

    public class Campaign{
     public   int campaign_id { get; set; }
     public   string campaign_name { get; set; }
     public   int representative_id { get; set; }}

我可以像这样将 JSON 反序列化为 List

 Campaigns = JsonConvert.DeserializeObject<List<Campaign>>(jsonstring);

但我想访问基于 campaign_name 的项目,我该怎么做? 如何将其反序列化为字典,其中值将是对象,键将是 campaign_name? 谢谢。

您可以使用 ToDictionary 方法来转换您的 List。您可以在 MSDN:

阅读更多内容
var dict = Campaigns.ToDictionary(x => x.campaign_id);

请注意,如果一个项目多次出现在列表中,这将失败,因此您可以 Distinct:

var dict = Campaigns.Distinct().ToDictionary(x => x.campaign_id)

对于词典,您可以使用:

var dictionaryOfCampaign = Campaigns.ToDictionary(x => x.campaign_id, y => y);

如果您不想使用字典,您可以使用这样的 linq 查询来过滤您的列表:

var filteredCampaign = Campaigns.Where(x => x.campaign_name.Equals("TEST"));
var filteredCampaign2 = Campaigns.Where(x => x.campaign_name.Contains("TEST"));

记得在你的使用中添加System.Linq