如何将 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
我有这个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