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

詹姆逊

这是处理fanart.tv Web服务响应JSON和C#之后的后续内容

因此,对于艺术家,您会得到一个响应,其中主要元素的名称与艺术家相同(因此,您将Metallica的拇指网络服务称为根,将其称为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; }
}

public class Thumb
{
  [JsonProperty("id")]
  public string Id { get; set; }

  [JsonProperty("url")]
  public string Url { get; set; }

  [JsonProperty("likes")]
  public string Likes { get; set; }
}

然后我可以使用以下方式将艺术家反序列化为JSON

var artistthumbs = JsonConvert.DeserializeObject<Dictionary<string, Artist>>(json);

问题是如何为这些专辑做同样的事情?我真的需要尝试并JsonConvert.DeserializeObject尽可能坚持下去,并且真的想反序列化类,但是我不知道如何为类建模

布莱恩·罗杰斯(Brian Rogers)

与另一个问题相同的想法。每当您动态更改JSON对象的属性名称时,都需要使用Dictionary。您可以轻松扩展现有的类来处理此问题。

首先,定义另一个类来保存专辑封面的清单:

class Album
{
    [JsonProperty("albumcover")]
    public List<Thumb> CoverThumbs { get; set; }
}

然后将以下内容添加到ArtistThumbs类的媒体资源中:

[JsonProperty("albums")]
public Dictionary<string, Album> Albums { get; set; }

然后,您可以像以前一样完全反序列化:

var artistthumbs = JsonConvert.DeserializeObject<Dictionary<string, ArtistThumbs>>(json);

现在,“专辑”属性具有专辑,其中字典中的每个键都是专辑的“ MusicbrainzID”,每个值都是对应的专辑信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将JSON反序列化为C#类

来自分类Dev

将json反序列化为C#时遇到麻烦

来自分类Dev

C#将JSON反序列化为列表

来自分类Dev

将JSON反序列化为C#对象

来自分类Dev

将JSON反序列化为C#对象-不反序列化任何数据

来自分类Dev

将JSON反序列化为对象C#

来自分类Dev

将JSON反序列化为C#类

来自分类Dev

将JSON反序列化为静态成员C#

来自分类Dev

将嵌套的JSON反序列化为C#对象

来自分类Dev

将多行JSON反序列化为C#对象

来自分类Dev

将json文件反序列化为对象C#

来自分类Dev

使用动态字段名称将JSON反序列化为C#类

来自分类Dev

无法将json反序列化为C#对象

来自分类Dev

将具有相同名称的不同xml元素反序列化为不同的C#类

来自分类Dev

json反序列化为C#

来自分类Dev

将json反序列化为C#中的类

来自分类Dev

当JSON使用日期作为属性名称时,如何使用GSON将JSON反序列化为Java Object?

来自分类Dev

将JSON反序列化为C#对象

来自分类Dev

如何将JSON反序列化为使用组合的C#类

来自分类Dev

将JSON反序列化为C#对象-不反序列化任何数据

来自分类Dev

无法将JSon反序列化为C#

来自分类Dev

将JSON反序列化为C#对象列表

来自分类Dev

将JSON数组反序列化为C#

来自分类Dev

当子元素名称为动态时,将字符串反序列化为 xml

来自分类Dev

C# 如何将 Json 反序列化为使用基类的通用实体?

来自分类Dev

将 json 对象反序列化为 C# 对象

来自分类Dev

将嵌套的 JSON 反序列化为 C# 类

来自分类Dev

C# - 将 Json 反序列化为字典

来自分类Dev

如何将 JSON 嵌套对象数组反序列化为 C# 对象