有一个我无法控制的API,但我需要使用C#消耗它的输出,最好使用JSON.Net.
这是一个示例响应:
[
{
"media_id": 36867,
"explicit": 0
}
]
Run Code Online (Sandbox Code Playgroud)
我曾计划过这样的课程:
class Media {
public int media_id;
public int explicit;
}
Run Code Online (Sandbox Code Playgroud)
并反序列化:
var l = JsonConvert.DeserializeObject<List<Media>>(s);
Run Code Online (Sandbox Code Playgroud)
不幸的是,"explicit"是一个C#关键字,因此无法编译.
我的下一个猜测是修改类:
class Media {
public int media_id;
public int explicit_;
}
Run Code Online (Sandbox Code Playgroud)
...以某种方式将响应属性映射到C#属性.
我该怎么做,或者我是否完全以错误的方式行事?
如果没有这个,我可以明白忽略响应中的"显式",如果有办法做到这一点?
Rob*_*cke 18
没有使用JSON.Net,但是根据这里的文档判断,我认为你只需要做你用XmlSerialization做的事情:添加一个属性来告诉如何调用JSON属性:
class Media {
[JsonProperty("media_id")]
public int MediaId;
[JsonProperty("explicit")]
public int Explicit;
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*ger 11
C#允许您通过使用@转义它们来定义具有保留字名称的成员(对于与此类似的互操作性情况),例如,
class Media {
public int media_id;
public int @explicit;
}
Run Code Online (Sandbox Code Playgroud)
不知道这是如何与JSON.Net一起播放的,但我认为它应该可以工作(因为@是一个转义,实际上并不是字段名称的一部分).
| 归档时间: |
|
| 查看次数: |
7003 次 |
| 最近记录: |