使用 Lastfm API 的 JSON 命名问题
Posted
技术标签:
【中文标题】使用 Lastfm API 的 JSON 命名问题【英文标题】:JSON Naming issue using Lastfm API 【发布时间】: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;
显然这不好,所以有人能指出我解决问题的正确方向吗? 可以重命名吗?
任何帮助将不胜感激,谢谢:)
【问题讨论】:
【参考方案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 过程更容易微调。以上是关于使用 Lastfm API 的 JSON 命名问题的主要内容,如果未能解决你的问题,请参考以下文章
Rest Template 无法正确解析 json rest api 响应
Autodesk Forge Data Manager Api 重命名项目