C# 如何在将JSON反序列化为C时处理元素名称的更改#

C# 如何在将JSON反序列化为C时处理元素名称的更改#,c#,json,json.net,C#,Json,Json.net,这是来自 因此,对于艺术家,您会得到一个响应,其中主元素的名称与艺术家的名称相同(因此您将Metallica的thumbs Web服务称为根,它称为Metallica,您称它为Megadeth,它称为Megadeth) 上一个问题解决了这个问题,但下一个阶段是相册,它最终包含两个级别的这些动态命名元素,因此搜索特定的相册,您将得到 {"Metallica":{"mbid_id":"65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab","albums":{"f44f4f73-

这是来自

因此,对于艺术家,您会得到一个响应,其中主元素的名称与艺术家的名称相同(因此您将Metallica的thumbs Web服务称为根,它称为Metallica,您称它为Megadeth,它称为Megadeth)

上一个问题解决了这个问题,但下一个阶段是相册,它最终包含两个级别的这些动态命名元素,因此搜索特定的相册,您将得到

{"Metallica":{"mbid_id":"65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab","albums":{"f44f4f73-a714-31a1-a4b8-bfcaaf311f50":{"albumcover":[{"id":"51252","url":"http://assets.fanart.tv/fanart/music/65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab/albumcover/kill-em-all-504c485914b25.jpg","likes":"2"}]}}}}
因此,您有相同的顶级艺术家详细信息和动态名称,但现在对于专辑,您有一个元素,该元素以MusicbrainzID命名,然后是拇指集合

对于艺术家的细节,我定义了类

public class ArtistThumbs
{
  public string Name { get; set; }

  [JsonProperty("mbid_id")]
  public string MusicBrainzID { get; set; }

  [JsonProperty("artistthumb")]
  public List<Thumb> Thumbs { get; set; }
}
然后我就可以使用

var artistthumbs = JsonConvert.DeserializeObject<Dictionary<string, Artist>>(json);
var artistthumbs=JsonConvert.DeserializeObject(json);
问题是我怎样才能为这些专辑做同样的事情?如果可能的话,我真的需要尝试并坚持使用
jsonvert.DeserializeObject
,并且真的想反序列化到类,但我不知道如何对类建模,这与另一个问题的想法相同。无论何时动态更改JSON对象的属性名,都需要使用字典。您可以很容易地扩展现有类来处理这个问题

首先,定义另一个类来保存相册的封面拇指列表:

class Album
{
    [JsonProperty("albumcover")]
    public List<Thumb> CoverThumbs { get; set; }
}
类相册
{
[JsonProperty(“albumcover”)]
公共列表{get;set;}
}
然后将以下内容添加到ArtistThumbs类的属性中:

[JsonProperty("albums")]
public Dictionary<string, Album> Albums { get; set; }
[JsonProperty(“相册”)]
公共词典相册{get;set;}
然后,您可以完全按照所做的操作进行反序列化:

var artistthumbs = JsonConvert.DeserializeObject<Dictionary<string, ArtistThumbs>>(json);
var artistthumbs=JsonConvert.DeserializeObject(json);
Albums属性现在具有Albums,其中字典中的每个键都是该专辑的“MusicbrainzID”,每个值都是相应的专辑信息。

与另一个问题的想法相同。无论何时动态更改JSON对象的属性名,都需要使用字典。您可以很容易地扩展现有类来处理这个问题

首先,定义另一个类来保存相册的封面拇指列表:

class Album
{
    [JsonProperty("albumcover")]
    public List<Thumb> CoverThumbs { get; set; }
}
类相册
{
[JsonProperty(“albumcover”)]
公共列表{get;set;}
}
然后将以下内容添加到ArtistThumbs类的属性中:

[JsonProperty("albums")]
public Dictionary<string, Album> Albums { get; set; }
[JsonProperty(“相册”)]
公共词典相册{get;set;}
然后,您可以完全按照所做的操作进行反序列化:

var artistthumbs = JsonConvert.DeserializeObject<Dictionary<string, ArtistThumbs>>(json);
var artistthumbs=JsonConvert.DeserializeObject(json);
Albums属性现在有Albums,其中字典中的每个键都是相册的“MusicbrainzID”,每个值都是相应的相册信息。

请参考下面的帖子请参考下面的帖子当您考虑它时请参考下面的帖子Doh simple。。。谢谢当你想到这件事的时候很简单。。。谢谢