.net 当JSON对象的字段名是保留关键字(如“short”)时,如何用Newtonsoft反序列化JSON对象?

vuktfyat  于 2022-12-01  发布在  .NET
关注(0)|答案(2)|浏览(175)

我有一些JSON对象:

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

我想让它反序列化到我的类中:

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);

但字段名应匹配。

alen0pnh

alen0pnh1#

使用JsonProperty属性

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

或者在属性名称前使用前缀“@”。使用该前缀可以将成员命名为与关键字相同的名称

class SuggestionInfoDataOpf
{
    public string @short;
}

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

xpcnnkqh

xpcnnkqh2#

您应该使用@的保留字,如下所示:

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

相关问题