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

标签 c# json json.net

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

这是一个示例响应:

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

我本来打算上这样的课:

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

反序列化:

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

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

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

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

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

我应该怎么做,还是我完全走错了路?

如果做不到这一点,我可以直接忽略响应中的“显式”,如果有办法做到这一点?

最佳答案

没有使用过 JSON.Net,但根据文档判断 here ,我认为您只需要执行您对 XmlSerialization 所做的操作:添加一个属性来说明应如何调用 JSON 属性:

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

关于c# - 反序列化包含与关键字冲突的属性的 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4671044/

相关文章:

asp.net - 如何在 JSON.NET 中对单引号/撇号进行编码

c# - 可以查找 Json.net 中不存在的 Key

c# - 使用 Newtonsoft JSON 反序列化 IList 对象

c# - 使用空合并运算符初始化?

c# - Automapper - 同时压平列表

c# - 不要用 Time.timescale 暂停/影响粒子

java - Json 和 Array 序列化 - Java Spring Boot

php - Json 不会在 php 中响应我的数组

c# - X509CertificateValidationMode 在 Linux 中不起作用?

ios - JSON 文件从服务器下载,文件加载了 8 次?