如何使用 Newtonsoft 反序列化 JSON 对象,当它的字段名称是像 "short" 这样的保留关键字时?

How to deserialize JSON object with Newtonsoft when it's fields names are reserved keywords like "short"?

我有一些 JSON 对象:

"opf": {
                "type": "2014",
                "code": "12247",
                "full": "Публичное акционерное общество",
                "short": "ПАО"
            }

我想让它反序列化到我的 class:

class SuggestionInfoDataOpf
{
    public string code;
    public string full;
    public string short; //ERROR. Of course I can't declare this field
    public string type;
}

怎么办?..我想像这样反序列化它:Newtonsoft.Json.JsonConvert.DeserializeObject<SuggestionInfoDataOpf>(json_str);,但字段名称应该匹配。

通过使用 JsonProperty 属性

class SuggestionInfoDataOpf
{
    [JsonProperty("short")]
    public string Something {get; set;}
}

或在 属性 的名称前使用前缀“@”。使用它您可以将成员命名为关键字

class SuggestionInfoDataOpf
{
    public string @short;
}

但 IMO JsonProperty 更好,因为它允许您遵守 C# 命名准则以及在视觉上将成员与关键字分开

您应该像这样在 @ 中使用关键字:

class SuggestionInfoDataOpf
{
    public string code;
    public string full;
    public string @short;
    public string type;
}