【问题标题】:JSON Naming issue using Lastfm API使用 Lastfm API 的 JSON 命名问题
【发布时间】:2014-03-26 20:05:31
【问题描述】:

我对 API 和 JSON 还很陌生,所以请多多包涵……

我想从 last 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; }
}

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

任何帮助将不胜感激,谢谢:)

【问题讨论】:

    标签: c# json api


    【解决方案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)。

    【讨论】:

    • 您好,感谢您的回复,它说找不到我的“JsonProperty”?有什么想法吗?
    • JSon.net...抱歉错过了参考
    • 是的,只要确保你包含那个 nuget 包 - 如果你在让它工作时遇到任何其他问题,请告诉我。我使用 Json.NET 是因为我认为它使 ser/deser 过程更容易微调。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多