反序列化包含与关键字冲突的属性的JSON响应

有一个我无法控制的API,但我需要使用C#消耗它的输出,最好使用JSON.Net。

这是一个示例响应:

[ { "media_id": 36867, "explicit": 0 } ] 

我曾计划过这样的课程:

 class Media { public int media_id; public int explicit; } 

并反序列化:

 var l = JsonConvert.DeserializeObject<List>(s); 

不幸的是,“explicit”是一个C#关键字,因此无法编译。

我的下一个猜测是修改类:

 class Media { public int media_id; public int explicit_; } 

…并以某种方式将响应属性映射到C#属性。

我该怎么做,或者我是否完全以错误的方式行事?

如果没有这个,我可以明白忽略响应中的“明确”,如果有办法做到这一点?

没有使用JSON.Net,但是根据这里的文档判断,我认为你只需要做你用XmlSerialization做的事情:添加一个属性来告诉如何调用JSON属性:

 class Media { [JsonProperty("media_id")] public int MediaId; [JsonProperty("explicit")] public int Explicit; } 

C#允许您通过使用@转义它们来定义具有保留字名称的成员(对于与此类似的互操作性情况),例如,

 class Media { public int media_id; public int @explicit; } 

不知道这是如何与JSON.Net一起播放的,但我认为它应该可以工作(因为@是一个转义,实际上并不是字段名称的一部分)。

以下代码对我有用。

 class JsonRpc { public string id; public string method; public string[] @params; } JsonConvert.DeserializeObject (data) 

感谢大家