使用Lastfm API的JSON命名问题

时间:2014-02-24 22:00:22

标签: c# json api

我是API和JSON的新手,所以请耐心等待......

我想从上一个fm的API中获取有关相册的信息,我可以使用所有内容来处理图像,因为似乎存在命名问题。

api的部分:

   "image": [{
        "#text": "http:\/\/userserve-ak.last.fm\/serve\/34s\/88057565.png",
        "size": "small"
    },
    {
        "#text": "http:\/\/userserve-ak.last.fm\/serve\/64s\/88057565.png",
        "size": "medium"
    },
    {
        "#text": "http:\/\/userserve-ak.last.fm\/serve\/174s\/88057565.png",
        "size": "large"
    },
    {
        "#text": "http:\/\/userserve-ak.last.fm\/serve\/300x300\/88057565.png",
        "size": "extralarge"
    },
    {
        "#text": "http:\/\/userserve-ak.last.fm\/serve\/_\/88057565\/Believe.png",
        "size": "mega"
    }],

通过JSON2CSharp运行JSON后,我得到:

public class Image
{
public string __invalid_name__#text { get; set; }
public string size { get; set; }
}

显然这不好,所以有人能指出我正确的方向来解决我的问题吗? 是否可以重命名它们?

非常感谢任何帮助,谢谢:)

1 个答案:

答案 0 :(得分:1)

我使用Json.NET来解析他们的API响应,并使用JsonProperty属性将#text映射到有效的属性名称,如下所示:

public class ArtistImage
{
    [JsonProperty("size")]
    public string Size { get; set; }

    [JsonProperty("#text")]
    public string Uri { get; set; }
}

如果您需要,我的代码在CodePlex上:https://concertfinder.codeplex.com/ 但基本上,一旦定义了类,只需使用JsonSerializer进行反序列化(jsonData)。